数据结构实验指导书(级).pdf

数据结构实验指导书(级) 数 据 结 构 实 验 指 导 书 计算机学院专业基础教研室 2008 年 3 月 第 1 页第 1 页 数据结构实验指导书(级) 实验一 线性表及其应用 一、实验目的 1.熟悉 C 语言的上机环境,进一步掌握 C 语言的结构特点。 2.掌握线性表的顺序存储结构的定义及 C 语言实现。 3.掌握线性表的链式存储结构——单链表的定义及 C 语言实现。 4.掌握线性表在顺序存储结构即顺序表中的各种基本操作。 5.掌握线性表在链式存储结构——单链表中的各种基本操作。 二、实验内容 1.顺序线性表的建立、插入及删除。 2.链式线性表的建立、插入及删除。 三、实验步骤 1.建立含 n 个数据元素的顺序表并输出该表中各元素的值及顺序表的长 度。 2.利用前面的实验先建立一个顺序表 L={21 ,23 ,14,5 ,56 ,17,31} , 然后在第 i 个位置插入元素 68。 3.建立一个带头结点的单链表,结点的值域为整型数据。要求将用户输 入的数据按尾插入法来建立相应单链表。 四、实现提示 1.由于C 语言的数组类型也有随机存取的特点,一维数组的机内表示就 是顺序结构。因此,可用 C 语言的一维数组实现线性表的顺序存储。 在此,我们利用 C 语言的结构体类型定义顺序表: #define MAXSIZE 1024 typedef int elemtype; /* 线性表中存放整型元素 */ typedef struct { elemtype vec[MAXSIZE]; int len; /* 顺序表的长度 */ 第 2 页第 2 页 数据结构实验指导书(级) }sequenlist; 将此结构定义放在一个头文件 sqlist.h 里,可避免在后面的参考程序中代 码重复书写,另外在该头文件里给出顺序表的建立及常量的定义。 2. 注意如何取到第 i 个元素,在插入过程中注意溢出情况以及数组的下 标与位序(顺序表中元素的次序)的区别。 3.单链表的结点结构除数据域外,还含有一个指针域。用 C 语言描述结 点结构如下: typedef int elemtype; typedef struct node { elemtype data; //数据域 struct node *next; //指针域 }linklist; 注意结点的建立方法及构造新结点时指针的变化。构造一个结点需用到 C 语言的标准函数 malloc() ,如给指针变量 p 分配一个结点的地址: p=(linklist *)malloc(sizeof(linklist));该语句的功能是申请分配一个类型为 linklist 的结点的地址空间,并将首地址存入指针变量 p 中。当结点不需要时 可以用标准函数 free(p)释放结点存储空间,这时 p 为空值(NULL )。 五、思考与提高 1. 如果按由表尾至表头的次序输入数据元素,应如何建立顺序表。 2. 在 main 函数里如果去掉L=a 语句,会出现什么结果? 六、完整参考程序 1.顺序线性表的建立、插入及删除。 #include stdio.h #include conio.h #define MAX 30 //定义线性表的最大长度 enum BOOL{False,True}; //定义 BOOL 型 typedef struct{ char elem[MAX]; //线性表 int last; //last 指示当前线性表的长度 第 3 页第 3 页

文档评论(0)

1亿VIP精品文档

相关文档