顺序表

#include

#include

#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;

}

}

你可能感兴趣的:(顺序表)