文档介绍:课程名称: 数据结构
班级:
学号:
姓名:
指导教师:
实验一
一、试验目的:
掌握线性表的概念。
掌握线性表的顺序存储结构定义。
熟练运用c语言实现结构表的基础操作。
在掌握顺序表的基础上,能够用顺序表解决简单问题。
二、实验内容
(1)定义顺序表,并输入10个整数,作为顺序表中的元素。然后编写一个函数printlist输出表中的所有元素。
(2)用算法2-2统计顺序表中的元素数。
(3)输入一个位置值和一个元素值,用算法2-4将新元素插入指定的位置,然后输出顺序表中的所有元素,检查插入是否正确。
(4)输入一个位置值,用算法2-5将该位置的元素删除,然后用printlist输出表中的所有元素。
三、代码
/*
顺序表的基本操作
*/
#include ""
/*存储结构*/
#define LISTSIZE 100 //宏定义
typedef int DataType; //定义类型 DataType 相当于 int
typedef struct //SqList相当于
{
DataType items[LISTSIZE];
int length;
}SqList;
/*算法2-1初始化顺序表*/
int InitList(SqList *L)
{
L->length=0;
return 1;
}
/*算法2-2求顺序表长*/
int ListLength(SqList L)
{
return ;
}
/*算法2-3判断顺序表是否为空*/
int ListEmpty(SqList L)
{
if(<=0)
return 1;
else
return 0;
}
/*算法2-4插入*/
int ListInsert(SqList *L,int pos,DataType item)
{
int i;
if(L->length>=LISTSIZE)
{
printf("顺序表已满,无法进行插入操作!");
return 0;
}
if(pos<=0 || pos>L->length+1)
{
printf("插入位置不合法,其取值范围应该是[1,length+1]");
return 0;
}
for(i=L->length-1; i>=pos-1; i--)
L->items[i+1]=L->items[i];
L->items[pos-1]=item;
L->length++;
return 1;
}
/*算法2-5删除*/
int ListDelete(SqList *L,int pos,DataType *item)
{
int i;
if(ListEmpty(*L))
{
printf("顺序表为空表,无法进行删除操作!");
return 0;
}
if(pos<1 || pos>L->length)
{
printf("删除位置不合法,其取值范围应该是[1,length]");
return 0;
}
*item=L->items[pos-1];
for(i=pos;i<L->length;i++)
L->items[i-1]=L->items[i];
L->length--;
return 1;
}
/*算法2-6查找指定元素在顺序表中的位置*/
int Find(SqList L,DataType item)
{
int pos=0;
if(ListEmpty(L))
{
printf("顺序表为空表,无法进行查找操作!");
return 0;
}
while(pos< && [pos]!=item)
pos++;
if(pos<)
return pos+1;
else
return 0;
}
/*算法2-7获取顺序表中指定位置上的数据元素*/
int GetElem(SqList L,int pos,DataType *item)
{
if(ListEmpty(L))
return 0;
if(pos<=0 || pos>)
{
printf("位置信息输入不合法,请重新输入");
return 0;
}
*item=[pos-1];
return 1;
}
/*算法2-8遍历顺序表*/
int Trave