实验一线性表及其应用一、实验目的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语言的结构体类型定义顺序表:#defineMAXSIZE 1024typedef int elemtype; /* 线性表中存放整型元素 */typedefstruct{elemtypevec[MAXSIZE]; intlen; /* 顺序表的长度 */ }sequenlist;将此结构定义放在一个头文件sqlist、h里,可避免在后面的参考程序中代码重复书写,另外在该头文件里给出顺序表的建立及常量的定义。2、注意如何取到第i个元素,在插入过程中注意溢出情况以及数组的下标与位序(顺序表中元素的次序)的区别。3、单链表的结点结构除数据域外,还含有一个指针域。用C语言描述结点结构如下: typedefintelemtype;typedefstructnode {elemtypedata; //数据域 structnode*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>#defineMAX30//定义线性表的最大长度enumBOOL{False,True};//定义BOOL型typedefstruct{charelem[MAX];//线性表intlast;//last指示当前线性表的长度}sqlist;voidinitial(sqlist&);//初始化线性表BOOLinsert(sqlist&,int,char);//在线性表中插入元素BOOLdel(sqlist&,int,char&);//在线性表中删除元素intlocate(sqlist,char);//在线性
《数据结构》实验一 线性表及其应用 来自淘豆网m.daumloan.com转载请标明出处.