1 / 12
文档名称:

程序设计课程设计报告.doc

格式:doc   大小:27KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

程序设计课程设计报告.doc

上传人:sanshenglu2 2020/8/15 文件大小:27 KB

下载得到文件列表

程序设计课程设计报告.doc

相关文档

文档介绍

文档介绍:程序设计课程设计报告设计人:电气Q1142李艳平(11150038)日期:2012-11-29指导教师:桂超设计题目:链表操作设计任务创建一个单链表,并返回头结点的地址head编写函数circulachain,将上述单链表改为单循环链表编写函数addnode,在数据为x的结点之后插入数据为y的结点编写函数delenode,删除单链表中数据为x的结点解决约瑟夫问题:有n个人,围坐一圈,对他们从1开始编号,即1,2,3,......,n,如果从某一个人开始报数,他报数1,按顺时针进行,紧挨的人报数2,再往下的人跟着报3......,一直报到k,凡报到k的人出列,再往下,继续从1开始报数,2,3,......,一直报到k,凡报到k的人出列。试输出该问题中顺序出列的人的名字。功能描述创建单链表函数:chain*crechain(char*ch)创建单循环链表函数:chain*circulchain(char*ch)销毁链表:voidDestroy(chain*head)显示链表中每个结点的数据:voidShow(chain*head)插入结点函数:voidAddNode(chain*head,charx,chary)删除结点函数:voidDeleNode(chain*head,charx)程序实现1、单链表的基本操作:#include<iostream>usingnamespacestd;structchain{ chardata; chain*next;};chain*crechain(char*ch)//创建单链表{ inti; chain*head=NULL,*p=NULL,*q=NULL; for(i=0;ch[i]!='\0';i++) { p=newchain; p->data=ch[i]; if(head==NULL) { head=p; } else { q->next=p; } q=p; } q->next=NULL; return(head);}voidAddNode(chain*head,charx,chary)/*插入结点*/{ chain*r,*s; if(head==NULL) cout<<"链表为空!"<<endl; else { r=head; while(r!=NULL) { if(r->data!=x) { r=r->next; } elsebreak; } if(r==NULL) cout<<"没有数据为x的节点!"<<endl; else { s=newchain; s->data=y; s->next=r->next; r->next=s; } }}voidDeleNode(chain*head,charx)/*删除结点*/{ chain*p=head,*s; if(head==NULL) cout<<"链表为空!"<<endl; if(head->data==x) { head=p->next; deletep; } else { while(p->next!=NULL) { if(p->next->data!=x) p=p->next; else { s=p->next; p->next=s->next; deletes; break; } } }}voidShow(chain*head)//输出链表{chain*p; p=head; while(p!=NULL) { cout<<p->data; p=p->next; } cout<<"\n";}voidDestroy(chain*head)//销毁链表{ chain*p; while(head!=NULL) { p=head; head=p->next; deletep; }}intmain(){ chain*head; head=crechain("abcd"); Show(head); AddNode(head,'b','f'); Show(head); DeleNode(head,'c'); Show(head); Destroy(head); return0;}2、单循环链表:chain*circulchain(char*ch){ inti; chain*head=NULL,*p=NULL,*q=NULL,*r; for(i=0;ch[i]!='\0';i++) { p=newchain;p->data=ch[i]; if(head==NULL) { head=p; } else { q->next=p; } q=p; } q->next=head; return(head);}3、约瑟夫问题:#include<iostream>usingnamespacestd;structJoseph{ charch; Joseph*nex