《數据结构》实验指导书(新).docVIP

  • 31
  • 0
  • 约2.39万字
  • 约 35页
  • 2016-12-07 发布于重庆
  • 举报
《數据结构》实验指导书(新)

数据结构实验指导书 实验一 线性表 [实验目的] 1.了解顺序表的结构特点及有关概念,掌握顺序表建立、插入、删除的基本操作算法。 2.了解单链表的结构特点及有关概念,掌握单链表建立、插入、删除的基本操作算法。 [实验内容] 1.顺序表的实践。 建立4个元素的顺序表list[]={2,3,4,5},实现顺序表建立的基本操作。 在list[]={2,3,4,5}的元素4和5之间插入一个元素9,实现顺序表插入的基本操作。 在list[]={2,3,4,9,5}中删除指定位置(i=3)上的元素9,实现顺序表的删除的基本操作。 2.单链表的实践。 建立一个包括头结点和3个结点的(4,2,1)的单链表,实现单链表建立的基本操作。 在已建好的单链表中的指定位置(x=2)插入一个结点3,实现单链表插入的基本操作。 在一个包括头结点和4个结点的(4,2,3,1)的单链表的指定位置删除一个结点,实现单链表删除的基本操作。 [实验要点及说明] 线性表(linear list)是n(n≥0)个数据元素a1,a2,…an组成的有限序列。 其中n 称为数据元素的个数或线性表的长度,当n=0时称为空表,n0时称为非空表。 通常将非空的线性表记为(a1,a2,…,an),其中的数据元素ai(1≤i≤n)是一个抽象的符号, ai是第i个数据元素,称i为数据元素ai在线性表中的位置。其具体含义在不同情况下是不同的,即它的数据类型可以根据具体情况而定,本书中,我们将它的类型设定为elemtype,表示某一种具体的已知数据类型。 顺序表也称为线性表的顺序存储结构。其存储方式为:在内存中用一组地址连续的存储单元依次存储线性表的数据元素,但该连续存储空间的大小要大于或等于顺序表的长度。一般让线性表中第一个元素存放在连续存储空间第一个位置,第二个元素紧跟着第一个之后,其余依此类推。 可定义顺序表如下: #define maxnum elemtype list[maxnum]; int num=-1; 线性表的链式存贮结构,也称为链表。其存贮方式是:在内存中利用存贮单元(可以不连续)来存放元素值及它在内存的地址,各个元素的存放顺序及位置都可以以任意顺序进行,原来相邻的元素存放到计算机内存后不一定相邻,从一个元素找下一个元素必须通过地址(指针)才能实现。故不能像顺序表一样可随机访问。常用的链表有单链表、循环链表和双向链表、多重链表等。 单链表是线性表的链式存贮结构中每个结点只有一个指针域的链表。 可定义单链表的结点结构如下: typedef struct node {elemtype data; struct node *next; }slnode; 必做顺序表、单链表的建立,选作顺序表、单链表的插入或删除。 [参考程序] 1.建立顺序表 #includestdio.h #define max 10 main() { int i=0,x,*num,ch; int list[max]; printf(input list:); while((ch= getchar())!=\n) { list[i]; i++; } *num=i-1; for(i=0;i=*num;i++) printf(list[%d]=%c,i,list[i]); } 2.顺序表插入 #includestdio.h #define max 5 #define true 1 #define false 0 int insertq(int list[],int *num,int i,int x) { int j; if((i0)||(i*num+1)) { printf(mistake.); return(false);} if(*num=max-1) {printf(list is full.); return(false); } for(j=*num+1;ji;j--) list[j]=list[j-1]; list[i]=x; (*num)++; return(true); } main() { int i=0,x,*num,ch; int list[max]; printf(input list:); while((ch=getchar())!=\n) { list[i]=ch; i++; } *num=i-1; printf(insert No.i:); scanf(%d,i); getchar(); printf(insert data:); x=getchar(); getchar()

文档评论(0)

1亿VIP精品文档

相关文档