目录
一、什么是顺序表和顺序存储结构
二、顺序表多种操作(代码将依次写)
1、结构体和变量初始化
2、数据输入
3、数据输出
4、数据插入
5、数据删除
6、数据查找
7、主函数
8、总结
顺序表是线性表的顺序存储表示的简称,它指的是用一组连续的内存单元依照线性表的逻辑顺序存放各个元素,此时计算机内部实际存在的线性表称为顺序表,即以"存储位置相邻"表示"位序相继的两个数据元素之间的前驱和后继的关系",并以表中第一个元素的存储位置作为线性表的起始地址,称为线性表的基地址。
顺序存储结构是把逻辑上相邻的元素存储在物理位置相邻的存储单元中(可以利用数组来理解)。
#include
#include
typedef int Datatype;
Datatype mark=0; //定义的标志位
typedef struct Seqlist
{
Datatype data[1001];
Datatype last; //顺序表的长度
}Seqlist; //结构体类型名
//将last初值赋值为0
void Init_Seqlist(Seqlist *L)
{
L->last=0;
}
void Create_Seqlist(Seqlist *L)
{
Datatype i;
if(L->last==1000)
{
printf("线性表已满员\n");
}
else{
printf("请输入线性表数据个数:\n");
scanf("%d",&L->last);
printf("请输入数据:\n");
for(i=1;i<=L->last;i++)
{
scanf("%d",&L->data[i]);
}
}
}
void Print_Seqlist(Seqlist *L)
{
Datatype i;
if(L->last==0)
{
printf("线性表为空\n");
}
else{
for(i=1;i<=L->last;i++)
{
printf("%d ",L->data[i]);
}
}
}
void Insert_Seqlist(Seqlist *L)
{
if(L->last==1000)
{
printf("线性表已满员,不能插入数据\n");
}
else if(L->last==0)
{
printf("线性表为空\n");
}
else{
Datatype position,x,i;
printf("请输入所要插入的位置:\n");
scanf("%d",&position);
if(position<1||position>1000)
{
printf("输入所要插入的位置无\n");
}
else
{
printf("请输入所要插入的数据:\n");
scanf("%d",&x);
for(i=L->last;i>=position;i--)
{
L->data[i+1]=L->data[i];
}
L->data[position]=x;
L->last++;
}
}
}
void Delete_Seqlist(Seqlist *L)
{
Datatype position,i;
if(L->last==0)
{
printf("线性表为空,无数据删除\n");
}
else{
printf("请输入所要删除的位置:\n");
scanf("%d",&position);
if(position<1||position>1000)
{
printf("输入所要删除的位置无\n");
}
else{
while(mark==0)
{
if(position>=1 && position<=L->last)
{
for(i=position;i<=L->last-1;i++)
L->data[i]=L->data[i+1];
L->last--;
mark=1; //执行一次
printf("删除成功\n");
}
else{
printf("该位置无数据,请重新输入\n");
scanf("%d",&position);
}
}
}
}
}
void Find_Seqlist(Seqlist *L)
{
Datatype finddata,i=1;
printf("请输入所要查找的数据:\n"); //值查找
scanf("%d",&finddata);
while(i<=L->last)
{
if(L->data[i]==finddata)
{
printf("该数据已查到,该数据的位置为:%d \n",i);
mark=1;
}
i++;
}
if(mark==0)
{
printf("无该数据\n");
}
}
int main()
{
Seqlist List;
Datatype a;
Init_Seqlist(&List);
while(1)
{
printf("1.数据的输入\n");
printf("2.数据的输出\n");
printf("3.数据的插入\n");
printf("4.数据的删除\n");
printf("5.数据的查找\n");
printf("0.退出\n");
printf("请输入选项:0~5\n");
scanf("%d",&a);
switch(a)
{
case 0: exit(0);break;
case 1: Create_Seqlist(&List);break;
case 2: Print_Seqlist(&List);break;
case 3: Insert_Seqlist(&List);break;
case 4: Delete_Seqlist(&List);break;
case 5: Find_Seqlist(&List);break;
}
//菜单优化
system("pause");
system("cls");
}
return 0;
}
本次进行了顺序表的简单操作,对数据输入、输出、插入、删除、查找、退出等多种操作更加理解。菜单优化命令在运行菜单能够使命令框中代码变的不重复,while循环运行一次清除一次。最后,通过自己把代码敲出来,会让自己有很大的收获。