数据结构课程设计报告--链表

数据结构课程设计报告--链表

ID:9667820

大小:94.50 KB

页数:13页

时间:2018-05-05

数据结构课程设计报告--链表_第1页
数据结构课程设计报告--链表_第2页
数据结构课程设计报告--链表_第3页
数据结构课程设计报告--链表_第4页
数据结构课程设计报告--链表_第5页
资源描述:

《数据结构课程设计报告--链表》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、《高级语言程序设计》课程设计报告班级:姓名:学号:设计时间:12一、应用程序的名称:链表二、应用程序的主题与设计目的:实现一个链表的建立、输出,并且完成节点的插入、删除操作。三、应用程序简介:1、基本结构A、功能模块图链表的基本操作链表的建立节点的删除链表的输出节点的插入节点的插入链表的建立节点的删除链表的输出B、各模块流程图Head=NULL,n=0开始(1)链表的建立:开辟一个新节点,使p1、P2指向它2读入一个学生数据给p1所指的结点p1—>num=0?Y1Head=NULL,n=01P1—

2、>num=0?N12Head=p1p2—>next=NULL341Head=NULLP=headP2—>next=p1P2—>next=p1Head=p1p2—>next=NULL12n=n+1n=1?NYp2=p1结束在开辟一个新节点,使p1指向它读入一个学生数据给p1所指结点(2)链表的输出:开始P=headHead=NULLNYP指向的不是结点1234p—>num,p—>score输出p指向的节点并且p指向下一个节点p—>num,p—>scorep=NULLp=NULL结束结束(3)链表结点

3、的删除开始Head=NULL?开始num=p1—>num或p1=NULLHead=NULL?P1=headP1=headnum=p1—>num或p1=NULL?YNP2=p1P2后移一个位置P2=p1“空表”“空表”P1=p1—>nextP1后移一个位置Num=p1—>numNNum=p1—>numY12P1=head?Np1是要删除的结点P1=head找不到Yhead=p1—>next(删除一个结点)P2—>next=p1—>next(删除一个结点)“找不到”结束P2—>next=—>next结

4、束Head=p1—>next(4)链表节点的插入开始P1=head,p0=stud原来的链表是空表?YNP1=p1—>nextP2=p1P0—>num>p1—>num,p1所指的不是表尾节点?NY12P0—>num<=P1—.>num?Head=p1?Head=p0P0—>next=p0(插到表头之前)P2—>next=p0,p0—>next=p1n=n+1结束将p0所指的结点作为唯一节点NYP1指向头结点YN插到表中间P1—>next=p0P0—>next=NULL2、基本内容:(源代码及注释)

5、#include#include#defineLENsizeof(structstudent)intn;structstudent{intnum;12intscore;structstudent*next;};structstudent*creat(void)/*定义函数,此函数带回一个指向链表头的指针*/{structstudent*head;structstudent*p1,*p2;n=0;p1=p2=(structstudent*)malloc(LEN)

6、;/*开辟一个新单元*/scanf("%d,%d",&p1->num,&p1->score);head=NULL;while(p1->num!=0){n=n+1;if(n==1)head=p1;elsep2->next=p1;/*把p1所指的结点连接在p2所指的结点后面*/p2=p1;p1=(structstudent*)malloc(LEN);scanf("%d,%d",&p1->num,&p1->score);}p2->next=NULL;return(head);/*函数返回head的值,即

7、链表中第一个节点的起始地址*/}12voidprint(structstudent*head){structstudent*p;printf("Now,these%drecordsare:",n);p=head;if(head!=NULL)do{printf("%d%d",p->num,p->score);p=p->next;}while(p!=NULL);}structstudent*del(structstudent*head,intnum){structstudent*p1,*p

8、2;if(head==NULL){printf("listnull!");returnhead;}p1=head;while(num!=p1->num&&p1->next!=NULL)/*p1指向的不是所要找的节点,且后有节点*/{p2=p1;p1=p1->next;}/*p1后移一个节点*/12if(num==p1->num)/*找到了*/{if(p1==head)head=p1->next;/*若p1指向的首节点,把第二个节点地址赋予head*/elsep2->next

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。