您的当前位置:首页数据结构-实验一顺序表的基本操作

数据结构-实验一顺序表的基本操作

2020-01-22 来源:乌哈旅游
路漫漫其修远兮,吾将上下而求索 -

实验1 顺序表基本操作

实验目的

1. 熟悉C语言的上机环境,掌握C语言的基本结构。 2. 会定义线性表的顺序存储结构。

3. 熟悉对顺序表的一些基本操作和具体的函数定义。

注意事项

在做第一次“数据结构”课程实验之前,要在硬盘上建立好自己的工作目 录,专门来存储你所做的实验程序及相关信息,以后每次做实验都采用这个目录。

实验内容

该程序的功能是对元素类型为整型的顺序表进行一些操作。该程序包括 顺序表结构类型的定义以及对顺序表操作的具体的函数定义和主函数。 /* 定义ElemType为int类型 */ typedef int ElemType;

/*顺序表存储空间的总分配量*/ #define MAXSIZE 100

/* 顺序存储类型 */ typedef struct

{ElemType data[MAXSIZE]; /*存放线 性表的数组*/ int length; /* length是顺序表的长度*/ }SeqList;

/* 初始化顺序表 */

SeqList SeqListInit( )

/* 清空顺序表 */

SeqList ListClear(SeqList L)

/* 求顺序表长度 */

int ListLength(SeqList L)

/* 检查顺序表是否为空 */

int ListEmpty(SeqList L)

11

路漫漫其修远兮,吾将上下而求索 -

/*检查顺序表是否为满 */

int ListFull(SeqList L)

/* 遍历顺序表 */

void ListTraverse(SeqList L)

/* 从顺序表中查找元素 */

ElemType ListGet(SeqList L ,int i)

/* 从顺序表中查找与给定元素值相同的元素在顺序表中的位置 */ int ListLocate(SeqList L, ElemType x)

/* 向顺序表中插入元素 */

SeqList ListInsert(SeqList L,int i,ElemType x)

/* 从顺序表中删除元素 */

SeqList ListDelete(SeqList L,int i)

/*求顺序表中元素的前驱*/

ElemType ListPrior (SeqList L,ElemType e)

/*求顺序表中元素的后继*/

ElemType ListNext(SeqList L,ElemType e)

22

路漫漫其修远兮,吾将上下而求索 -

=========================================================================

部分参考程序

===================================================================================

/* 定 义ElemType为int类型 */ typedef int ElemType;

/*顺 序表存储空间的总分配量*/ #define MAXSIZE 100 #define FALSE 0 #define TRUE 1

/* 顺 序存储类型 */ typedef struct

{ElemType data[MAXSIZE]; /*存放线性表的数组*/ int length; /* length是顺序表的长度*/

}SeqList;

/* 初 始化顺序表 */

SeqList SeqListInit( ) {SeqList L; L.length=0; return L; }

/* 清 空顺序表 */

SeqList ListClear(SeqList L)

33

路漫漫其修远兮,吾将上下而求索 -

{L.length=0; return L; }

/* 求 顺序表长度 */

int ListLength(SeqList L) {return(L.length);}

/* 检 查顺序表是否为空 */

int ListEmpty(SeqList L)

{if(L.length) return(FALSE); else return(TRUE); }

/*检 查顺序表是否为满 */

int ListFull(SeqList L)

{if(L.length==MAXSIZE) return(TRUE); else return(FALSE); }

/* 遍 历顺序表 */

void ListTraverse(SeqList L) {int i;

if(L.length<=0) printf(\"顺序表为空\\n\"); else {printf(\"当前顺 序表中的元素为:\\n\");

for(i=1;i<=L.length;i++) printf(\"%5d \ printf(\"\\n\");

} }

/* 从 顺序表中查找元素 */

ElemType ListGet(SeqList L ,int i) {ElemType e; e=L.data[i-1]; return(e); }

/* 从 顺序表中查找与给定元素值相同的元素在顺序表中的位置 */ int ListLocate(SeqList L, ElemType x) {int i=0;

while(i44

路漫漫其修远兮,吾将上下而求索 -

if (i/* 向 顺序表中插入元素 */

SeqList ListInsert(SeqList L,int i,ElemType x) {int j;

if(L.length==MAXSIZE) printf(\"表满,不能插入\\n\"); else if(i<1||i>L.length+1)

printf(\"插入位置不正确\\n\");

else {for(j=L.length-1;j>=i-1;j--) /*元素依次向后移动*/

L.data[j+1]=L.data[j];

L.data[i-1]=x; /*插入x*/

L.length++; /*表长增1*/ } return L; }

/* 从 顺序表中删除元素 */

SeqList ListDelete(SeqList L,int i) {int j;ElemType x; if (i<1||i>L.length)

printf(\"删除位置不正 确\\n\"); else {x=L.data[i-1];

for(j=i;j<=L.length-1;j++) /*元素依次向前移动*/

L.data[j-1]=L.data[j];

L.length--; /*表长减1*/ printf(\"%d已 被删除\\n\ } return L;

55

路漫漫其修远兮,吾将上下而求索 -

}

/*求顺序表中元素的前驱*/

ElemType SeqListPrior(SeqList L,ElemType e) {int i=0;

while(iif(i==0) {printf(\"第 一个元素没有前驱\\n\");return 0;} else if(i<=L.length-1) return(L.data[i-1]);

else {printf(\"不存在值为%d的元素\\n\ }

/*求顺序表中元素的后继*/

ElemType SeqListNext(SeqList L,ElemType e) {int i=0;

while(iif(i==L.length-1) {printf(\"最后一个元素没有后继\\n\");return 0;}

else if(ielse {printf(\"不存在值为%d的元素\\n\ }

66

因篇幅问题不能全部显示,请点此查看更多更全内容