线性表的链式存储实验

线性表的链式存储实验

ID:33423234

大小:235.00 KB

页数:31页

时间:2019-02-25

线性表的链式存储实验_第1页
线性表的链式存储实验_第2页
线性表的链式存储实验_第3页
线性表的链式存储实验_第4页
线性表的链式存储实验_第5页
资源描述:

《线性表的链式存储实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验报告学号:****************年**月**日系别***专业**班级1班姓名****课程名称数据结构课程类型专业必修学时数2实验名称线性表的链式存储实验实验目的和要求:(1)掌握用在VC环境下上机调试单链表的基本方法(2)掌握单链表、循环链表的插入、删除、查找、求表长以及有序单链表的合并算法的实现实验内容:一、单链表基本操作的实现有序单链表的合并,已知单链表la和lb中的数据元素按非递减有序排列,将la和lb中的数据元素,合并为一个新的单链表lc,lc中的数据元素仍按非递减有序排列,要求不破坏la表和lb表的结构。源代码:#include

2、#includetypedefstructlink{intdata;structlink*next;}Link;//创建单向链表并初始化Link*Create_link(Link*head){Link*pr=head;Link*p=head;p=(Link*)malloc(sizeof(Link));if(p==NULL){printf("没有足够的空间!");exit(0);}if(head==NULL){head=p;p->next=NULL;printf("表头已创建!");}else{while(p

3、r->next!=NULL){pr=pr->next;}pr->next=p;p->next=NULL;printf("请输入该结点的数据:");scanf("%d",&(p->data));}returnhead;}//在链表中按序号查找voidInsert_link(Link*head,intk){inti=1;Link*p=head->next;if(head==NULL){printf("次链表为空!请先创建链表");exit(0);}while(p!=NULL&&inext;i++;}if(p==NULL){printf

4、("输入序号超过表长!");exit(0);}elseprintf("第%d个元素为%d",k,p->data);}//在链表中按值查找voidFind_elem(Link*head,intkey){Link*p=head->next;inti=1;while(p!=NULL&&p->data!=key){p=p->next;i++;}if(p==NULL){printf("未找到该元素!");}else{printf("%d在第%d个位置且地址为%d",key,i,p);}}//将e插入链表的第pe个位置voidInsert_elem

5、(Link*head,intpe,inte){Link*q=NULL;//q用于申请新节点Link*p=head->next;intj=1;while(p!=NULL&&jnext;j++;}if(p==NULL){printf("插入的位置超过合法范围");exit(0);}elseif(pe==1){q=(Link*)malloc(sizeof(Link));if(q==NULL){printf("空间不足,节点申请失败!");}q->data=e;q->next=p;head->next=q;}else{q=(Li

6、nk*)malloc(sizeof(Link));if(q==NULL){printf("空间不足,节点申请失败!");exit(0);}q->data=e;q->next=p->next;p->next=q;}printf("插入新节点后的链表为:");p=head->next;while(p!=NULL){printf("%d",p->data);p=p->next;}}//删除元素voidDelete(Link*head,intchioce){intk,j=1;Link*p=head,*q=head->next,*pr=head->nex

7、t;intkey;switch(chioce){case1:printf("输入删除的元素序号:");scanf("%d",&k);while(q!=NULL&&jnext;j++;}if(q==NULL)printf("删除位置不合法,越界!");else{p->next=q->next;free(q);}break;case2:printf("输入要删除结点的值:");scanf("%d",&key);while(q!=NULL){if(q->data==key){p->next=q->next;free(q);q=p

8、->next;}else{p=q;q=q->next;}}if(p==NULL)printf(

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

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

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