实验2 线性表顺序存储

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验2 线性表顺序存储
实验类型:验证性要求:必做学时:2
实验目的:
(1)掌握线性表的特点
(2)掌握线性表顺序存储结构的基本运算。

(3)掌握线性表的创建、插入、删除和显示线性表中元素等基本操作。

实验内容:
(1)用结构体描述一个顺序表。

(2)创建顺序表;在顺序表中插入元素、删除元素;显示顺序表中所有元素等基本操作。

(3)用if 语句设计一个选择式菜单。

源程序:
#define MAXSIZE 100 //MAXSIZE 为线性表可能的最大长度
#include <stdio.h>
typedef struct
{
int data[MAXSIZE];
int last;
} SeqList; //线性表定义
void CreatSqlist(SeqList &L,int n) //建立一个顺序存储的线性表
{ int i;
if(n<0||n>MAXSIZE)printf("n的值不正确,请重新输入\n");
else
{
for(i=0;i<n;i++)
scanf("%d",&L.data[i]);
L.data[i]=n;
}
}
void Output(SeqList L) //输出顺序表L
{ int i;
if(st<0)printf("线性表不存在\n");
else
{
for(i=0;i<L.data[i];i++)
printf("%d",&L.data[i]);
}
}
int Length(SeqList L) //求线性表的长度
{if(st<0)printf("线性表不存在\n");
return 0;
}
int Search(SeqList L, int x)//查找函数。

返回L中第1个与x相等的数据元素的位置(从0算起),否则返回值为0
{
int i=0;
while(i<=st&&L.data[i]!=x)
i++;
if(i>st)
return -1;
else
return i;
}
int Insert(SeqList &L, int x,int i)//在线性表L中第i个数据元素之前插入一个数据元素x
{ int j;
if(st==MAXSIZE-1)
{
printf("位置出错!");
return 0;
}
for(j=st;j>=i-1;j--)
L.data[j+1]=L.data[j];
L.data[i-1]=x;
st++;
return 1;
}
int Delete(SeqList &L,int i) //删除线性表L中第i个数据元素
{ int j;
if(i<1||i>st+1)
{
printf("不存在第i个元素\n");
return 0;
}
for(j=1;j<=st;j++)
L.data[j-1]=L.data[j];
st--;
return 1;
}
void main()
{
int choice,j=1,n,x,k,i;
SeqList l;
while(j)
{
printf("\n");
printf("\n\t\t 线性表顺序存储 ");
printf("\n\t\t********************************");
printf("\n\t\t* 1----建立顺序表 *");
printf("\n\t\t* 2----输出顺序表 *");
printf("\n\t\t* 3----在顺序表中查找 *"); printf("\n\t\t* 4----向顺序表中插入元素 *");
printf("\n\t\t* 5----删除顺序表中的元素 *");
printf("\n\t\t* 6----求顺序表长度 *");
printf("\n\t\t* 0----返回 *");
printf("\n\t\t 请选择菜单号0---6:");
scanf("%d",&choice);
switch(choice)
{
case 1: {printf("输入元素值,构建顺序表:\n");
printf("请输入顺序表元素的个数: ");
scanf("%d",&n);
CreatSqlist(l, n); //建立长度为n的顺序表l Output(l); //输出表l
break;}
case 2: Output(l); printf("\n");break;
case 3: {printf("请输入要查找的元素值: ");
scanf("%d",&x);
k=Search(l,x);
printf("要查找的元素的定位:%d\n",k);
printf("\n");
break;}
case 4: {printf("输入要插入元素的位置及其值: ");
scanf("%d",&i);
scanf("%d",&x);
Insert(l, x, i);
Output(l); //输出插入元素后的表l printf("\n");
break;}
case 5: {printf("输入要删除元素的位置: "); scanf("%d",&i); Delete(l,i);
Output(l); //输出删除元素后的表l break;}
case 6: {printf("线性表长度为: ");
k=Length(l);
printf("%3d\n",k);
break;}
case 0: j=0;break;
default:printf("\n\t\t 菜单选择错误!请重输."); }
}
}
运行结果:。

相关文档
最新文档