程序设计课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 ++)