单链表的基本操作.doc
文本预览下载声明
上机实验报告
学 院: 计算机与信息技术学院
专 业: 计算机科学与技术(师范)
课程名称: 数据结构
实验题目: 单链表建立及操作
班级序号: 师范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
显示全部