1、单链表单链表肇庆学院计算机学院实 验 报 告专业: 电子商务 班级: 11科技1班 姓名: 黎庆强 学号:201124131147 课程名称: 单链表学年 学期 1 / 2 课程类别 专业必修 限选 任选 实践 实验时间:2012年 3月23日 实验内容: 1.编写函数,实现随机产生或键盘输入一组元素,建立一个带头结点的单链表(无序)。2.编写函数,实现遍历单链表。3.编写函数,实现把单向链表中元素逆置(不允许申请新的结点空间)。4.编写函数,建立一个非递减有序单链表。5.编写函数,利用以上算法,建立两个非递减有序单链表,然后合并成一个非递减链表。6.编写函数,在非递减有序单链表中插入一个元素
2、使链表仍然有序。7.编写函数,实现在非递减有序链表中删除值为x的结点。8.编写一个主函数,在主函数中设计一个简单的菜单,分别调试上述算法。 实验目的及要求: 目的:1.掌握单链表的存储结构形式及其描述。2.掌握单链表的建立、查找、插入和删除操作。要求:1.插入、删除时元素的移动原因、方向及先后顺序。2.理解不同的函数形参与实参的传递关系。 实验内容、方法与步骤:(使用附页填写并附在本页后) 实验结果:(使用附页填写并附在本页后) 小结:通过这次的实验我学会了如何去运用单链表的建立、查找、插入和删除操作,理解了不同的函数形参与实参的传递关系。分数: 批阅老师: 20 年 月 日第 页 / 共 页
3、肇庆学院计算机科学系实验报告(附页)实验内容、方法与步骤:#include#includetypedef int datatype;typedef struct node/结点类型的定义datatype data; struct node *next;Lnode,*Linklist;void former_Linklist(Linklist &L);/表头插入void later_Linklist(Linklist &L);/表尾插入void print_Linklist(Linklist &L);/输出数据void youinsert_Linklist(Linklist L,int i);/
4、有序插入int length_Linklist(Linklist L);/求表长void xuhao_Linklist(Linklist L,int i);/按序号查找void anjing_Linklist(Linklist L);/按值查找void delete_Linklist(Linklist L);/删除数据void insert_Linklist(Linklist L);int x,a,i;int main()int choic=1;Linklist L;L=NULL;do printf(*欢迎使用整型单链表*n); printf(tt【1】表头输入数据 【2】表尾输入数据 【3】
5、按值查找数据nn); printf(tt【4】位置查找数据 【5】删除数据 【6】求单链表的表长nn); printf(tt【7】用有序表插入法建立一个新的单链表nn); printf(tt【8】把元素x插入到有序单链表里,使其依然有序nn); printf(tt【9】退出n); printf(*n); printf(请选择你要进行的操作【1-9】:); scanf(%d,&choic);/ 读入一个数 while(choic9) printf(*输入错误!请重新选择*n); scanf(%d,&choic);/读入第二个数 switch(choic) case 1:/表头输入数据 forme
6、r_Linklist(L); print_Linklist(L); break; case 2:/表尾输入数据 printf(请你输入要插入整型数据的个数:); scanf(%d,&a); printf(请你输入%d个整型数据:,a); later_Linklist(L); print_Linklist(L); break; case 3:/按值查找数据 anjing_Linklist(L); break; case 4:/位置查找数据 xuhao_Linklist(L,i); break; case 5: printf(请你输入要删除的整型数据:); scanf(%d,&x); delete
7、_Linklist(L);/删除数据 print_Linklist(L); break; case 6: int length; length=length_Linklist(L); printf(此单链表的表长为:%d,length); printf(n); break; case 7: L=(Linklist)malloc(sizeof(Lnode); L-next=NULL; printf(请你输入要建立新单链表整型数据的个数:); scanf(%d,&a); printf(请你输入%d个整型数据:,a); for(i=0;inext!=NULL) p=p-next; printf(%6
8、d,p-data); printf(n);void former_Linklist(Linklist &L)/表头插入 Linklist p,q; printf(请你输入要插入整型数据的个数:); scanf(%d,&a); printf(请你输入%d个整型数据:,a); L=(Linklist)malloc(sizeof(Lnode); L-next=NULL; p=L;for(i=0;idata=x; q-next=p-next; p-next=q;void later_Linklist(Linklist &L)/表尾插入 Linklist p,q; L=(Linklist)malloc(
9、sizeof(Lnode); L-next=NULL; p=L; for(i=0;idata=x; q-next=NULL; p-next=q; p=q; void anjing_Linklist(Linklist L)/按值查找 int j=0; printf(请输入你要查找的整型数据:); scanf(%d,&x); Lnode *p=L-next; while(p!=NULL&p-data!=x) p=p-next; j+; printf(你要查的整型数据%d的位置为:,x); printf(%6d,j+1); printf(n); void xuhao_Linklist(Linklis
10、t L,int i)/按序号查找 int j=0; printf(请你输入要查的整型数据的位置:); scanf(%d,&i); Lnode *p=L; while(p-next!=NULL&jnext; j+; if(j=i) printf(你要查的位置%d的整型数据为:,i); printf(%6d,p-data); printf(n);void delete_Linklist(Linklist L)/删除数据 Lnode *p,*q; p=L; q=L-next; while(q&q-data!=x) p=q; q=q-next; if(!q) printf(没有你想要删除的整型数据!)
11、; else p-next=q-next; free(q); void insert_Linklist(Linklist L)/有序插入 Lnode *p,*q; q=(Linklist)malloc(sizeof(Lnode); q-data=x; p=L; while(p-next&p-next-datanext; q-next=p-next; p-next=q;int length_Linklist(Linklist L)/求表长 Lnode *p=L; int j=0; while(p-next) p=p-next; j+; return j;程序运行如下:分数: 批阅老师: 200 年 月 日第 页 / 共 页
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1