线性表顺序存储
线性表顺序存储的C/C++实现
线性表可以按顺序以及链式两种方式存储,顺序存储主要靠C语言数组实现,而链式存储主要用到链表。下面是线性表顺序结构的基本操作及代码实现。
表的输入及输出
表的输入比较简单,数组遍历输入输出即可,不多解释。
void Input(SqList *a) //输入表
{
int l;
printf("输入表长: "); scanf("%d", &l);
printf("输入表: ");
for(int i = 0;i < l;++i) //遍历输入
scanf("%d", &(a->data[i]));
a->len = l;
}
void Print(SqList *a) //输出表
{
for(int i = 0;i < a->len - 1;++i) //遍历输出
printf("%d ",a->data[i]);
printf("%d\n", a->data[a->len - 1]);
}
访问值
直接访问指定位置即可
ElemType GetElm(SqList *a,int loc) //访问表中的值
{
if(loc < 1 || loc > a->len) //给出坐标合法性检查
printf("Error!\n");
return a->data[loc-1]; //返回查到的值
}
插入及删除值
插入值时,先将指定位置的后继全部后移一位,注意这里我用了倒序遍历,可以防止覆盖
void Insert(SqList *a,int loc,ElemType n) //插入
{
if(loc < 1 || loc > a->len + 1) //给出坐标合法性检查
{
printf("Error!\n");
return;
}
for(int i = a->len;i >= loc;i--) //后继后移
a->data[i] = a->data[i - 1];
a->data