顺序表
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 20
typedef int ElemType;
typedef struct
{
ElemType elem[MAXSIZE];
int last;
}SeqList;
void InitList(SeqList *L);
int LenList(SeqList);
int InsList(SeqList *L, int i, ElemType e);
int DelList(SeqList *L, int i, ElemType *e);
int main()
{
SeqList La;
ElemType Lb;
int i, x, n = 0;
InitList(&La);
printf("线性表长度\n");
scanf_s("%d", &n);
La.last = n;
printf("线性表元素\n");
for (i = 0; i < n; i++)
scanf_s("%d", &La.elem[i]);
printf("\n");
printf("插入位置元素\n"); //插入
scanf_s("%d %d", &i, &x);
InsList(&La, i, x);
for (i = 0; i < La.last; i++)
printf("%d\n", La.elem[i]);
printf("删除位置\n"); //删除
scanf_s("%d", &i);
DelList(&La, i, &Lb);
printf("删除数:%d\n", Lb);
for (i = 0; i < La.last; i++)
printf("%d\n", La.elem[i]);
return 0;
}
void InitList(SeqList *L)
{
L->last = 0;
}
int LenList(SeqList L)
{
return L.last;
}
int InsList(SeqList *L, int i, ElemType e) //插入
{
int k;
if ((i < 1) || (i > L->last + 2)) //判断位置是否存在
{
printf("plug-in position are not legall\n");
return 0;
}
if (L->last >= MAXSIZE - 1)//判断数据是否溢出
{
printf("list are overflow\n");
return 0;
}
else
{
for (k = L->last; k >= i - 1; k--)//插入操作
L->elem[k + 1] = L->elem[k];
L->elem[i - 1] = e;
L->last++;
return 0;
}
}
int DelList(SeqList *L, int i, ElemType *e)//删除
{
int k;
if ((i < 1) || (i > L->last + 1)) //判断位置是否存在
{
printf("删除位置不合法!\n");
return 0;
}
else
{
*e = L->elem[i - 1];
for (k = i; k <= L->last; k++)
L->elem[k - 1] = L->elem[k];
L->last--;
return 1;
}
}