顺序表的操作(静态)
以菜单的形式,显示线性表的各种操作,界面大概如下图所示:
![image-20200324102113569](https://i-blog.csdnimg.cn/blog_migrate/311b5a1a76d8ebae77b9663d505987c9.png)
各个功能的具体实现
1.声明顺序表
顺序表通常有两种形式,一种静态的,即通过确定长度的数组来存储元素。另一种则是动态的,通过动态内存分配,来控制顺序表的容量。
#define MAXSIZE 100 //最大容量
typedef int ElemType; //元素的基本数据类型,方便更改
typedef struct SeqList //SeqList可以省略
{
ElemType elem[MAXSIZE];/定长数组;
int length; //有效数字的个数,顺序表当前存储元素的个数;
}SeqList; //这里的SeqList相当于 struct SeqList 即可以通过SeqList L;直接声明顺序表变量
2.顺序表的初始化
由于静态的顺序表在声明的时候就确定了容量,所以就不用再开辟空间,直接把表长设为0即可。
void InitList(SeqList *L)
{
L->length=0; //把顺序表的长度设置为0
}
静态顺序表的这一步跟清空顺序表的操作一样,都是把表长设置为0;
3.判断顺序表是否为空
如果线性表的长度为0,那么这个线性表就为空;
//判断线性表是否为空
int ListEmpty(SeqList L)
{
if(L.length==0)//如果长度为0,返回1
return 1;
return 0;//默认非空,返回0;
}
4.查找顺序表指定位置的元素
顺序表的位置比数组的下标大1,要记住的关系。也就是第i个元素的下标为i-1
//查找指定位置的元素
int GetElem(SeqList L,int i,ElemType *e) //i 表示查询的位置 ,e用来存储查询到的元素
{
if(i<=L.length&&i>=1)