




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、链表程序设计训练一 实验目的l 使学生掌握Visual C+ 6.0环境下C+语言程序调试与排错方法;l 使学生掌握单向链表结构并实现插入、删除、建表等基本功能操作;l 使学生掌握应单向循环链表结构并实现插入、删除、建表等基本功能操作;l 使学生掌握双向链表结构并实现插入、删除、建表等基本功能操作;l 使学生熟悉应用链表解决实际问题;二 实验环境l 所需硬件环境为微机;l 所需软件环境为Microsoft Visual C+ 6.0或Code:Blocks ;三 实验内容(二)、设计单向循环链表并实现其构建(包括正序及逆序建表)、插入、删除、销毁等基本操作算法#include#include#
2、define OVERFLOW -2#define OK 1#define FAILURE 0#define TRUE 1#define FALSE 0#define ERROR -1typedef int ElemType;typedef int Status;typedef struct Node ElemType e; struct Node *next;ListNode,*list;Status DestroyList_Sl(list L)/销毁 list p; if(!L) return ERROR;/*单向线性链表不存在*/ do/*释放单向线性链表空间*/ p=L-next; L
3、-next=p-next; delete p; while(L); return OK;Status ListDelete_Sl(list L) list p; if(!L)return ERROR;/*单向线性链表结点L不存在*/ p=L-next; L-next=p-next; delete p; return OK;list set(int n)/*建立链表*/ list L,p,q; L=new ListNode; L-e=0; L-next=NULL; p=L; cout正序的数字:; for(int i=0;it; q-e=t; q-next=NULL; p-next=q; p=p
4、-next; else while(p) q=p; p=NULL; delete p; p=q-next; if(i=n-1) p-next=L-next; return L;list set2(int n) list L2,p,q; if(L2=new ListNode) L2-next=NULL; L2-e=0; cout逆序数字:; for(int i=0;it; if(q=new ListNode) q-e=t;q-next=NULL;q-next=L2-next;L2-next=q; else p=L2; while(p) L2=p;delete L2; p=p-next; p=L2
5、-next; while(p-next) p=p-next; p-next=L2; return L2;int main() list L,p,q,L2; int n,ListDelete_number; cout个数:n; L=set(n); p=L-next; int i=0; while(p) coutenext; i+; if(i=n) break; /单链正序测试 coutnext; while(p!=L2) coutenext; coutendl; ListDelete_number=ListDelete_Sl(L); coutListDelete_number=ListDelet
6、e_numbernext; i=0; cout剩下的:; while(p) coutenext; i+; if(i=n-1) break; /删除结点及测试 DestroyList_Sl(L);return 0;(三)、设计双向链表并实现其构建(包括正序及逆序建表)、插入、删除、销毁等基本操作算法#include#include#define OVERFLOW -2#define OK 1#define FAILURE 0#define TRUE 1#define FALSE 0#define ERROR -1typedef int ElemType;typedef int Status;ty
7、pedef struct Node ElemType e; struct Node *next; struct Node *last;ListNode,*list;Status DestroyList_Sl(list L)/销毁 list p; if(!L) return ERROR;/*单向线性链表不存在*/ do/*释放单向线性链表空间*/ p=L-next; L-next=p-next; delete p; while(L); return OK;Status ListDelete_Sl(list L) list p; if(!L)return ERROR;/*单向线性链表结点L不存在*
8、/ p=L-next; L-next=p-next; delete p; return OK;list set(int n)/*建立链表*/ list L,p,q; L=new ListNode; L-e=0; L-next=NULL; p=L; cout正序的数字:; for(int i=0;it; q-e=t; q-next=NULL; p-next=q; q-last=p; p=p-next; else while(p) q=p; p=NULL; delete p; p=q-next; if(i=n-1) q=L-next; p-next=q; q-last=p; return L;li
9、st set2(int n) list L2,p,q; if(L2=new ListNode) L2-next=NULL; L2-e=0; cout逆序数字:; for(int i=0;it; if(q=new ListNode) q-e=t;q-next=NULL;q-next=L2-next;L2-next=q; else p=L2; while(p) L2=p;delete L2; p=p-next; p=L2-next; while(p-next) p=p-next; p-next=L2; return L2;int main() list L,p,q,L2; int n,ListDe
10、lete_number; cout个数:n; L=set(n); p=L-next; int i=0; while(p) coutenext; i+; if(i=n) break; /单链正序测试 coutendl; coutnext; while(p) p=p-last; coutet; i+; if(i=n) break; coutnext; while(p!=L2) coutenext; coutendl; ListDelete_number=ListDelete_Sl(L); coutListDelete_number=ListDelete_numbernext; i=0; cout剩
11、下的:; while(p) coutenext; i+; if(i=n-1) break; /删除结点及测试 DestroyList_Sl(L);return 0;(四)、分析并使用循环链表解决“猴子选大王”问题#includetypedef struct Node int e; struct Node *next; struct Node *last;ListNode,*list;list set(int n)/*建立链表*/ list L,p,q; L=new ListNode; L-e=0; L-next=NULL; p=L; for(int i=0;ie=i+1; q-next=NUL
12、L; p-next=q; q-last=p; p=p-next; else while(p) q=p; p=NULL; delete p; p=q-next; if(i=n-1) q=L-next; p-next=q; p-next=L; L-last=p; return L;int main() list L,p,q,t; int n,m,i=0; cout总个数:n; cout跳下报的数字:m; L=set(n); p=L; /*while(p) p=p-next; coutenext)&(p=L-next) p=p-next; if(p-e0) i+; if(i%m=0) q=p-next; t=p-last; t-next=q; q-last=t; coutdelete eendl; delete p; p=t; cout猴王:e;return 0;四 实验分析及问题思考1、分析双向循环链表与单向链表、循环链表、双向链表间的差异;循环链表是在单向链表的基础上用最后面的指针指向头结点,而双向链表是在单向链表的基础上,定义一个指针,用后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全知识题库填空及答案解析
- 水利安全员b类考试题库及答案解析
- 2025钢混隔层施工合同范本
- 锅炉拆迁协议书
- app用户协议书和隐私政策模板
- 分红权协议书
- 隐名股东协议书
- tcp协议书传输数据
- 行政协议书问题
- 铁路调车员岗前培训考试及答案解析
- 2025合伙制合同协议书
- 福建省全国名校联盟2026届高三上学期联合开学摸底考试语文试题及参考答案
- 心血管衰老的分子机制探索
- 医院收费室培训课件
- 重点小学小学语文毕业总复习小升初资料大全
- 高原健康培训课件
- 血站差错管理课件
- GB/T 18266.2-2025体育场所等级的划分第2部分:健身房
- 第一次月考2024-2025学年度九年级英语
- 二级公立医院绩效考核三级手术目录(2020版)
- 07FK02防空地下室通风设备安装图集
评论
0/150
提交评论