删除链表结点.ppt

删除链表结点.ppt

ID:56317070

大小:307.50 KB

页数:18页

时间:2020-06-11

删除链表结点.ppt_第1页
删除链表结点.ppt_第2页
删除链表结点.ppt_第3页
删除链表结点.ppt_第4页
删除链表结点.ppt_第5页
资源描述:

《删除链表结点.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、§11.7用指针处理链表11.7.4建立动态链表所谓建立动态链表是指在程序执行过程中从无到有地建立起一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前后相链的关系例11.5写一函数建立一个有3名学生数据的单向动态链表.算法如图图11-12§11.7用指针处理链表算法的实现:我们约定学号不会为零,如果输入的学号为0,则表示建立链表的过程完成,该结点不应连接到链表中。如果输入的p1->num不等于0,则输入的是第一个结点数据(n=1),令head=p1,即把p1的值赋给head,也就是使head也指向新开辟的结点p1所指向的新开辟的

2、结点就成为链表中第一个结点图11-13§11.7用指针处理链表算法的实现:再开辟另一个结点并使p1指向它,接着输入该结点的数据.如果输入的p1->num≠0,则应链入第2个结点(n=2),将新结点的地址赋给第一个结点的next成员.接着使p2=p1,也就是使p2指向刚才建立的结点图11-14§11.7用指针处理链表算法的实现:再开辟一个结点并使p1指向它,并输入该结点的数据.在第三次循环中,由于n=3(n≠1),又将p1的值赋给p2->next,也就是将第3个结点连接到第2个结点之后,并使p2=p1,使p2指向最后一个结点.图11-15

3、§11.7用指针处理链表算法的实现:再开辟一个新结点,并使p1指向它,输入该结点的数据。由于p1->num的值为0,不再执行循环,此新结点不应被连接到链表中.将NULL赋给p2->next.建立链表过程至此结束,p1最后所指的结点未链入链表中,第三个结点的next成员的值为NULL,它不指向任何结点。图11-16§11.7用指针处理链表建立链表的函数如下:#include#include#defineNULL0//令NULL代表0,用它表示“空地址#defineLENsizeof(structstu

4、dent)//令LEN代表struct//student类型数据的长度structstudent{longnum;floatscore;structstudent*next;};intn;//n为全局变量,本文件模块中各函数均可使用它§11.7用指针处理链表structstudent*creat(){structstudent*head;structstudent*p1,*p2;n=0;p1=p2=(structstudent*)malloc(LEN);scanf("%ld,%f",&p1->num,&p1->score);head=N

5、ULL;while(p1->num!=0){n=n+1;if(n==1)head=p1;elsep2->next=p1;p2=p1;p1=(structstudent*)malloc(LEN);scanf("%ld,%f",&p1->num,&p1->score);}p2->next=NULL;/*将新节点的next指针赋值NULL,即作为表尾*/return(head);}P1=(structstudent*)malloc(sizeof(structstudent))§11.7用指针处理链表11.7.5输出链表首先要知道链表第一个结点

6、的地址,也就是要知道head的值。然后设一个指针变量p,先指向第一个结点,输出p所指的结点,然后使p后移一个结点,再输出,直到链表的尾结点。图11-17,11-18§11.7用指针处理链表例11.9编写一个输出链表的函数print.voidprint(structstudent*head){structstudent*p;printf("Now,These%drecordsare:",n);p=head;if(head!=NULL)do{printf("%ld%5.1f",p->num,p->score);p=p->next

7、;}while(p!=NULL);}§11.7用指针处理链表11.7.6对链表的删除操作从一个动态链表中删去一个结点,并不是真正从内存中把它抹掉,而是把它从链表中分离开来,只要撤销原来的链接关系即可。图11-19§11.7用指针处理链表例11.10写一函数以删除动态链表中指定的结点.解题思路:从p指向的第一个结点开始,检查该结点中的num值是否等于输入的要求删除的那个学号。如果相等就将该结点删除,如不相等,就将p后移一个结点,再如此进行下去,直到遇到表尾为止。§11.7用指针处理链表可以设两个指针变量p1和p2,先使p1指向第一个结点.

8、如果要删除的不是第一个结点,则使p1后移指向下一个结点(将p1->next赋给p1),在此之前应将p1的值赋给p2,使p2指向刚才检查过的那个结点§11.7用指针处理链表注意:①要删的是第一个结点(p1的值

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

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

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