资源描述
实验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)
/*检查顺序表是否为满 */
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)
=========================================================================
部分参考程序
===================================================================================
/* 定 义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)
{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 ",L.data[i-1]);
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(i<L.length&&L.data[i]!=x)
i++;
if (i<L.length) return (i+1);
else return 0;
}
/* 向 顺序表中插入元素 */
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",x);
}
return L;
}
/*求顺序表中元素的前驱*/
ElemType SeqListPrior(SeqList L,ElemType e)
{int i=0;
while(i<L.length&&L.data[i]!=e) /*在顺序表中查找值为e的元素*/
i++;
if(i==0) {printf("第 一个元素没有前驱\n");return 0;}
else if(i<=L.length-1) return(L.data[i-1]);
else {printf("不存在值为%d的元素\n",e);return 0;}
}
/*求顺序表中元素的后继*/
ElemType SeqListNext(SeqList L,ElemType e)
{int i=0;
while(i<L.length&&L.data[i]!=e) /*在顺序表中查找值为e的元素*/
i++;
if(i==L.length-1) {printf("最后一个元素没有后继\n");return 0;}
else if(i<L.length-1) return(L.data[i+1]);
else {printf("不存在值为%d的元素\n",e);return 0;}
}
展开阅读全文