程序设计课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序设计课程设计报告

程序设计课程设计报告

设计人:

电气Q1142

李艳平

(11150038)

日期:2012-11-29

指导教师:桂超

设计题目:链表操作

一、设计任务

1、创建一个单链表,并返回头结点的地址 head

2、编写函数circulachain,将上述单链表改 为单循环链表

3、编写函数addnode,在数据为x 的结点之 后插入数据为y 的结点

X 的结点

对他们从1开始编号,即1, 2, 3, .......... . n, 如果从某一个人开始报数,他报数1,按顺 时针进行,紧挨的人报数2,再往下的人跟 着报3……,一直报到k,凡报到k 的人出列, 再往下,继续从1开始报数,2, 3,……, 一直报到k,凡报到k 的人出列。试输出该 问题中顺序出列的人的名字。

二、功能描述

创建单循环链表函数:chain* circulchain(char *ch)

销毁链表:void Destroy(chain *head) 显示4、编写函数delenode,

5、解决约瑟夫问题:有n

创建单链表函数: chain* crechain(char *ch)

链表中每个结点的数据:void Show(chain

*head)

插入结点函数:void AddNode(chain *head, char x, char y)

删除结点函数:void DeleNode(chain *head, char x)

三、程序实现

1、单链表的基本操作:

#include

using namespace std;

struct chain

(

char data;

chain *next;

};

chain* crechain(char *ch) 〃创建单链表

(

int i;

chain *head = NULL, *p = NULL, *q =

NULL;

for (i = 0; ch[i] !=,\0" i ++) (

p = new chain;

p->data = ch[i];

if (head == NULL)

(

head = p;

)

else

(

q->next = p;

}

q = P;

}

q -> next = NULL;

return (head);

} void AddNode(chain *head, char x, char y) /* 插入结点*/

chain *r, *s;

if (head == NULL)

cout«''链表为空!H«endl;

else

(

r = head;

while (r != NULL)

(

if (r->data != x)

(

r = r->next;

)

else break;

}

if (r == NULL)

cout<<”没有数据为x的节点!n«endl;

else

(

s = new chain;

s->data = y;

s->next = r->next;

r->next = s;

}

}

void DeleNode(chain *head, char x) /* 删除结点*/

(

chain *p = head, *s;

if (head == NULL)

cout«''链表为空!" v vendl;

if (head->data == x)

(

head = p・>next;

delete p;

}

else

(

while (p->next != NULL)

(

if (p->next->data != x)

p = p->next;

else

s = p->next;

p->next = s->next;

delete s;

break;

)

}

}

}

void Show(chain *head) 〃输出链表

(

chain *p;

p = head;

while (p != NULL)

{

cout«p->data;

p = p->next;

)

cout«H\n H;

void Destroy(chain *head) 〃销毁链表

chain *p;

while (head != NULL)

(

p = head;

head = p・>next;

delete p;

)

}

int main()

(

chain *head;

head = crechain(H abcd n);

Show(head);

AddNode(head, b, T);

Show(head);

DeleNode(head, 'c');

Show(head);

Destroy (head);

return 0;

}

2、单循环链表:

chain* circulchain(char *ch)

int i;

chain *head = NULL, *p = NULL, NULL, *r; for(i = 0; ch[i] !=,\0" i ++)

相关文档
最新文档