1 / 12
文档名称:

数据结构实验.doc

格式:doc   大小:231KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构实验.doc

上传人:mh900965 2018/11/15 文件大小:231 KB

下载得到文件列表

数据结构实验.doc

文档介绍

文档介绍:数据结构课程实验报告实验地点: 二教501
实验
名称
线性表
指导教师
李四
实验时间

姓名
张三
学号
111111111
成绩
实验、训练目的
,以及这种特性在计算机内的两种存储结构。
2. 掌握线性表的存储结构的定义及其C语言实现。
3. 掌握链式表的存储结构——单链表的定义及其C语言实现。
4. 掌握线性表的顺序存储结构即顺序表中的各种基本操作。
5. 掌握链式表的存储结构——单链表中的各种基本操作。
实验预****含实验原理及设计过程等)
实验原理:线性表的链式结构及各种基本操作。
算法描述:要求分别写出在带头结点的单链表中第(从1开始计数)个位置之后插入元素、创建带头结点的单链表、在带头结点的单链表中删除第i个位置的元素、顺序输出单链表的内容的算法描述。
要在单链表中第i个元素前插入结点,或者删除第i个结点,都只需要修改第i-1个结点的next指针。
所以进行插入、删除操作的主要工作就是找到第i-1个结点,这需要从头结点开始。
实验、训练内容
请编制C程序,利用链式存储方式来实现线性表的创建、插入、删除和查找等操作。
具体地说,就是要根据键盘输入的数据建立一个单链表,并输出该单链表;然后根据屏
幕菜单的的选择,可以进行数据的插入或删除,并在插入或删除数据后,在输出单链表;
最后在屏幕菜单中选择0,即可结束程序的运行。
四、实验、训练过程(含实验步骤、测试数据、实验结果等)
#include<>
#include<>
#include<>
typedef int ElemType;
typedef struct Node
{
ElemType data;
struct Node * next;
}Node,List;
List*L;
List*creat();
void Insert(List*L,int i,ElemType e);
ElemType Delete(List*L,int i);
int Search(List*L,ElemType e);
void Display(List*L);
void main()
{
int i,k,r;
ElemType e,x;
char ch;
do{
printf("\n");
printf("\n ");
printf("\n ");
printf("\n ");
printf("\n ");
printf("\n ");
printf("\n 请输入您的选择(0,1,2,3,4)");
scanf("%d",&k);
switch(k)
{
case 1:{ L=creat();
Display(L);
}break;
case 2:{ printf("\n请输入插入位置:");
scanf("%d",&i);
printf("\n请输入要插入的元素值:");
scanf("%d",&e);
Insert(L,i,e);
Display(L);
}break;
case 3:{ printf("\n请输入要删除元素的位置:");
scanf("%d",&i);
x=Delete(L,i);
Display(L);
if(x!=-1)
{
printf("\n删除的元素为:%d\n",x);
printf("删除%d后的单链表为:\n",x);
Display(L);
}
else
printf("\n要删除的元素不存在!");
}break;
case 4:{ printf("\n请输入要查找元素的值:");
scanf("%d",&e);
r=Search(L,e);
if(r==-1)
printf("\n未找到指定元素!");
else
printf("\n已找到,元素位置是%d",r);
}break;
}
}while(k>=1&&k<5);
ch=getchar();
}
List*creat()
{
List*h,*p,*s;
ElemType x;
h=(List*)malloc(sizeof(Node));
h->next=NULL;
p=h;
printf("\n请输入第一个数据元素:");
scanf("%d",&x);
while(x!=-999)
{
s