数据结构_顺序表

//顺序表的基本操作:1、定义 2、初始化 3、取值 4、查找 5、插入 6、删除

#include <iostream>    //必须有,不然printf等函数无法调用

#define OK 0;
#define ERROR 1;

typedef struct   
//定义一个顺序表(struct:结构体),就像是创立一个数组一样,不需要涉及到指针
{
int elem[20]; //定义一个“数组”
int length; //定义表长
}SqList;

int Initlist(SqList &s)
//初始化一个顺序表
{
s.length = 0;  //只需要把长度初始化为0即可。
return 0;
}

int GetElem(SqList &s,int n)
//顺序表取第n位的值
{
if(s.length == 0)
{
printf("顺序表为空!\n");
return 1;
}
else
{
return s.elem[n];
}
}


int LocateElem(SqList &s, int n)
//查找顺序表中的n值
{
if(s.length == 0)
{
printf("顺序表为空!\n");
return 1;
}
for (int i = 0; i < s.length; ++i)
{
if(s.elem[i] == n)
{
printf("找到了\n");
return 0;
}
else
{
return 1;
}
}
return 0;
}


int ListInsert(SqList &s,int n,int num)
//在s表中的第n位插入num
{
if(s.length>=20)
{
printf("顺序表已满!\n");
return 1;
}
else
{
for(int i=s.length-1;i>=n-1;i--) //从后往前进行遍历,不能从前往后,行不通。
s.elem[i+1] = s.elem[i];
s.elem[n-1] = num;
s.length++;
}
return 0;
}

int ListDelete(SqList &s,int n)
//删除一个数
{
if(s.length == 0)
return 1;
for(int i=s.length;i>n;i--)
s.elem[i] = s.elem[i+1];
s.length--;
return 0;
}

int AddElem(SqList &s,int n)
//添加一个数
{
if(s.length ==20)
printf("表已经满了\n");
return 1;
s.elem[s.length] = n;
s.length++;
return 0;
}

int main(int argc, char const *argv[])
{
int i;
SqList l;
Initlist(l);
printf("请输入下面您要进行的选项\n");
printf("1.添加一个数\n");
printf("2.删除一个数\n");
printf("3.插入一个数\n");
printf("4.查找一个数\n");
scanf("%d",&i);
if(i == 1)
{
int n;
printf("请输入想添加的数:\n");
scanf("%d",&n);
AddElem(l,n);
printf("添加成功!\n");
}
else if(i==2)
{
int n;
printf("请输入想删除的数:\n");
scanf("%d",&n);
ListDelete(l,n);
printf("删除成功!\n");


}
else if(i==3)
{
int n;
int num;
printf("请输入想插入的数:\n");
scanf("%d",&num);
printf("请问您想插到第几位:\n");
scanf("%d",&n);
ListInsert(l,n,num);
printf("插入成功!\n");
}
else if(i == 4)
{
int n;
printf("请输入想查找的数:\n");
scanf("%d",&n);
LocateElem(l,n);
printf("已经查找到!\n");
}
else
{
return 1;
}
for (int b = 0; b < 10; ++b)
{
int a;
printf("请输入下面您要进行的选项\n");
printf("1.添加一个数\n");
printf("2.删除一个数\n");
printf("3.插入一个数\n");
printf("4.查找一个数\n");
scanf("%d",&a);
i = a;
}
return 0;
}



需要注意的事项:

1、头文件不用写特别多,只需要include<iostream>就可以

2、定义和初始化问题:只需要定义一个int elem[20]和长度就可以,初始化只需要把length为0就可以,无关指针问题。

3、进行插入操作的时候,要从后往前遍历,进行插入,会省很多事,因为从前往后的话,后一个数赋给前一个数会卡在你想插入的那个i的位置,要是想程序跑通的话还需要写一个循环才行,所以采用方便省力的方法。


















  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值