双向链表的构建,插入,删除和显示实验报告

双向链表的构建,插入,删除和显示实验报告

ID:47510252

大小:99.00 KB

页数:12页

时间:2020-01-12

双向链表的构建,插入,删除和显示实验报告_第1页
双向链表的构建,插入,删除和显示实验报告_第2页
双向链表的构建,插入,删除和显示实验报告_第3页
双向链表的构建,插入,删除和显示实验报告_第4页
双向链表的构建,插入,删除和显示实验报告_第5页
资源描述:

《双向链表的构建,插入,删除和显示实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、..一.实验目的:1)掌握双向线性链表的逻辑特征2)熟练掌握带头结点的双向链表的指针操作,能完成双向链表的构建,插入,删除与显示等复杂应用。二.实验原理双向链表的结点中有两个指针域,其一指向直接后继,另一指向直接前驱,在C语言中可描述如下:typedefstructDuLNode{ElemTypedata;structDuLNode*prior;structDuLNode*next;}DuLNode,*DuLinkList;双向链表的操作和单链表类似。本实验利用函数以及指针处理双向链表的知识,首先建立四个函数,cre

2、at,print,ListInsert_DuL,ListDelete_DuL分别实现对双向链表的建立,输出,插入,删除功能。还需建立GetElemP_DuL函数来辅助。然后将五个函数组织在一个C程序中,用main函数作主调函数。三.实验内容word教育资料..1.首先建立一个带头结点的非空的双向链表。建立函数creat,操作与建立线性链表类似,但需要修改两个方向的指针。本实验以输入6个学生的数据为例。2.建立函数GetElemP_DuL,得到第i个元素的位置指针。3.对链表进行插入操作。建立函数ListInsert_

3、DuL,输入要插入的学生数据以及位置,调用函数GetElemP_DuL,插入成功返回1,否则返回0。4.对链表进行删除操作。建立函数ListDelete_DuL,输入要删除的学生位置,调用函数GetElemP_DuL,删除成功返回1,否则返回0。5.对链表的结果进行输出与显示。建立函数print,对链表进行正向和反向的输出。6.建立main函数,把以上五个函数整合到一个程序之中,当输入的数据不为0时可进行多次删除,插入操作,并对每一次的结果进行显示。四.实验方法运行环境:VisualC++6.0把所有程序思想写成代码

4、,通过VisualC++编译,得到结果,即运行成功。本实验程序代码:#include"stdio.h"#include"malloc.h"#defineNULL0#defineLENsizeof(structstudent)#defineOK1#defineERROR0structstudentword教育资料..{intdata;structstudent*prior;structstudent*next;};intn;structstudent*creat(void){structstudent*L;struct

5、student*p1,*p2;L=(structstudent*)malloc(LEN);L->next=NULL;L->prior=NULL;n=0;p1=p2=(structstudent*)malloc(LEN);scanf("%d",&p1->data);while(p1->data!=0){n=n+1;if(n==1){L->next=p1;p1->prior=L;}elseword教育资料..{p2->next=p1;p2->next->prior=p2;}p2=p1;p1=(structstudent*

6、)malloc(LEN);scanf("%d",&p1->data);}p2->next=L;L->prior=p2;return(L->next);}voidprint(structstudent*head){structstudent*p;p=head;printf("正向输出:");if(head!=NULL)do{printf("%d",p->data);p=p->next;}while(p!=head->prior);word教育资料..printf("反向输出:");if(p==head->p

7、rior){p=p->prior;do{printf("%d",p->data);p=p->prior;}while(p!=head->prior);}}structstudent*GetElemP_DuL(structstudent*L,inti){structstudent*p;intj=1;p=L;while(j!=i){p=p->next;j++;}returnp;}word教育资料..intListInsert_DuL(structstudent*L,inti,inte){structstudent*p

8、,*s;if(!(p=GetElemP_DuL(L,i)))returnERROR;if(!(s=(structstudent*)malloc(LEN)))returnERROR;s->data=e;s->prior=p->prior;p->prior->next=s;s->next=p;p->prior=s;n=n+1;returnOK;}i

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

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

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