收藏 分享(赏)

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

上传人:精品资料 文档编号:10553259 上传时间:2019-11-28 格式:DOC 页数:11 大小:101.53KB
下载 相关 举报
双向链表的构建,插入,删除和显示实验报告.doc_第1页
第1页 / 共11页
双向链表的构建,插入,删除和显示实验报告.doc_第2页
第2页 / 共11页
双向链表的构建,插入,删除和显示实验报告.doc_第3页
第3页 / 共11页
双向链表的构建,插入,删除和显示实验报告.doc_第4页
第4页 / 共11页
双向链表的构建,插入,删除和显示实验报告.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

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

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

3、istDelete_DuL,输入要删除的学生位置,调用函数 GetElemP_DuL,删除成功返回 1,否则返回 0。5. 对链表的结果进行输出与显示。建立函数 print,对链表进行正向和反向的输出。6. 建立 main 函数,把以上五个函数整合到一个程序之中,当输入的数据不为 0 时可进行多次删除,插入操作,并对每一次的结果进行显示。四实验方法运行环境:Visual C+6.0把所有程序思想写成代码,通过 Visual C+编译,得到结果,即运行成功。本实验程序代码:#include“stdio.h“#include“malloc.h“#define NULL 0#define LEN s

4、izeof(struct student)#define OK 1#define ERROR 0struct studentint data;struct student *prior;struct student *next;int n;struct student *creat(void)struct student *L;struct student *p1,*p2;L=(struct student *)malloc(LEN);L-next=NULL;L-prior=NULL;n=0;p1=p2=(struct student *)malloc(LEN);scanf(“%d“,whil

5、e(p1-data!=0)n=n+1;if(n=1)L-next=p1;p1-prior=L;elsep2-next=p1;p2-next-prior=p2;p2=p1;p1=(struct student *)malloc(LEN);scanf(“%d“,p2-next=L;L-prior=p2;return (L-next);void print(struct student *head)struct student *p;p=head;printf(“正向输出:n“);if(head!=NULL)doprintf(“%dn“,p-data);p=p-next;while(p!=head-

6、prior);printf(“反向输出:n“);if(p=head-prior) p=p-prior;doprintf(“%dn“,p-data);p=p-prior;while(p!=head-prior);struct student *GetElemP_DuL(struct student *L,int i)struct student *p;int j=1;p=L;while(j!=i)p=p-next;j+;return p;int ListInsert_DuL(struct student *L,int i,int e)struct student *p,*s; if(!(p=Ge

7、tElemP_DuL(L,i)return ERROR;if(!(s=(struct student *)malloc(LEN)return ERROR;s-data=e;s-prior=p-prior;p-prior-next=s;s-next=p;p-prior=s;n=n+1;return OK;int ListDelete_DuL(struct student *L,int i)struct student *p;int e;if(!(p=GetElemP_DuL(L,i)return ERROR;e=p-data;p-prior-next=p-next;p-next-prior=p-

8、prior;free(p);n=n-1;return OK;void main()struct student *head; int i,e;printf(“请输入学生的数据:n“);head=creat();print(head);printf(“请输入要插入的位置以及数据:n“);scanf(“%d%d“,while(e!=0)if(ListInsert_DuL(head,i,e)=1)print(head);printf(“请输入要插入的位置以及数据:n“);scanf(“%d%d“,printf(“请输入要删除的位置:n“);scanf(“%d“,while(i!=0)if(ListDelete_DuL(head,i)=1)print(head);printf(“请输入要删除的位置:n“);scanf(“%d“,五实验结果运行结果截图:表明双向链表构建成功。六实验结论可以通过指针的方法建立双向链表并对其进行插入,删除和显示操作。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报