欢迎来到天天文库
浏览记录
ID:24737669
大小:138.00 KB
页数:13页
时间:2018-11-15
《数据结构课程设计报告--链表》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、《高级语言程序设计》课程设计报告班级:姓名:学号:设计时间:12一、应用程序的名称:链表二、应用程序的主题与设计目的:实现一个链表的建立、输出,并且完成节点的插入、删除操作。三、应用程序简介:1、基本结构A、功能模块图链表的基本操作链表的建立节点的删除链表的输出节点的插入节点的插入链表的建立节点的删除链表的输出B、各模块流程图Head=NULL,n=0开始(1)链表的建立:开辟一个新节点,使p1、P2指向它2读入一个学生数据给p1所指的结点p1—>num=0?Y1Head=NULL,n=01P1—>num=0?N12Head=p1p2—>ne
2、xt=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)链表结点的删除开始Head=NULL?开始num=p1—>num或p1=NULLHead=NULL?
3、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结束Head=p1—>next(4)链表节点的插入开始P1=head,p0=stud原来的链表是空表?YNP1=p1—>nextP2=p1P
4、0—>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、基本内容:(源代码及注释)#include#include#defineLENsizeof(structstudent)intn;structstudent{intnum;
5、12intscore;structstudent*next;};structstudent*creat(void)/*定义函数,此函数带回一个指向链表头的指针*/{structstudent*head;structstudent*p1,*p2;n=0;p1=p2=(structstudent*)malloc(LEN);/*开辟一个新单元*/scanf("%d,%d",&p1->num,&p1->score);head=NULL;while(p1->num!=0){n=n+1;if(n==1)head=p1;elsep2->next=p1;/*
6、把p1所指的结点连接在p2所指的结点后面*/p2=p1;p1=(structstudent*)malloc(LEN);scanf("%d,%d",&p1->num,&p1->score);}p2->next=NULL;return(head);/*函数返回head的值,即链表中第一个节点的起始地址*/}12voidprint(structstudent*head){structstudent*p;printf("Now,these%drecordsare:",n);p=head;if(head!=NULL)do{printf("%d%
7、d",p->num,p->score);p=p->next;}while(p!=NULL);}structstudent*del(structstudent*head,intnum){structstudent*p1,*p2;if(head==NULL){printf("listnull!");returnhead;}p1=head;while(num!=p1->num&&p1->next!=NULL)/*p1指向的不是所要找的节点,且后有节点*/{p2=p1;p1=p1->next;}/*p1后移一个节点*/12if(num==
8、p1->num)/*找到了*/{if(p1==head)head=p1->next;/*若p1指向的首节点,把第二个节点地址赋予head*/elsep2->next
此文档下载收益归作者所有