文档详情

单链表的基本操作.doc

发布:2016-12-15约3.92千字共10页下载文档
文本预览下载声明
上机实验报告 学 院: 计算机与信息技术学院 专 业: 计算机科学与技术(师范) 课程名称: 数据结构 实验题目: 单链表建立及操作 班级序号: 师范1班 学 号: 201421012731 学生姓名: 邓雪 指导教师: 杨红颖 完成时间:2015年12月25号 实验目的: (1)动态地建立单链表; (2)掌握线性表的基本操作:求长度、插入、删除、查找在链式存储结构上的实现; (3)熟悉单链表的应用,明确单链表和顺序表的不同。 实验环境: Windows 8.1 Microsoft Visual c++ 6.0 实验内容及要求: 建立单链表,实现如下功能: 1、建立单链表并输出(头插法建立单链表); 2、求表长; 3、按位置查找 4、按值查找结点; 5、后插结点; 6、前插结点 7、删除结点; 四、概要设计: 1、通过循环,由键盘输入一串数据。创建并初始化一个单链表。 2、编写实现相关功能函数,完成子函数模块。 调用子函数,实现菜单调用功能,完成顺序表的相关操作。 五、代码: #includestdio.h #includestdlib.h typedef char datatype; typedef struct node { datatype data; struct node *next; }linklist; linklist *head,*p; //头插法建立单链表 linklist *Creatlistf() { char ch; linklist *head,*s; head=NULL; ch=getchar(); printf(请输入顺序表元素(数据以$结束):\n); while(ch!=$) { s=(linklist *)malloc(sizeof(linklist)); s-data=ch; s-next=head; head=s; ch=getchar(); } return head; } //求单链表的长度 void get_length(struct node *head) { struct node *p=head-next; int length=0; while(p) { length++; p=p-next; } head-data=length; printf(该单链表的长度为:%d\n,head-data);} //按序号查找结点 linklist *Get(linklist *head,int i) { int j; linklist *p; p=head;j=0; while((p-next!=NULL)(ji)) { p=p-next; j++; } if(i==j) return p; } //按值查找结点 linklist *Locate(linklist *head,datatype key) { int pos=0; p=head-next; printf(查找结点位置为:); while(p!=NULL) { if(p-data!=key) { p=p-next; pos++; } else { pos++; break; } } return p; } //后插结点 void Insertafter(linklist *p,datatype x) { linklist *s; s=(linklist *)malloc(sizeof(linklist)); s-data=x; s-next=p-next; p-next=s; printf(插入成功); } //前插结点 void Insertbefore(linklist *p,datatype x) { linklist *s; s=(linklist *)malloc(sizeof(linklist)); s-next=p-next; s-data = p-data; p-data=x; p-next=s; } //删除结点 linklist *Deleteafter(linklist *head) { int i; linklist *r,*p; prin
显示全部
相似文档