#include<stdio.h>
#include<stdlib.h>
#define MAX_SIZE 100
#define SIZE 20
typedef int ElemType;
typedef struct{
ElemType *elem;
ElemType size;
ElemType count;
}SqList;
ElemType InitList(SqList *L) //初始化线性表
{
L->elem =(int *)malloc(MAX_SIZE*sizeof(int));
L->count = 0;
L->size = 100;
return 0;
}
ElemType InsertList(SqList *L, ElemType pos, ElemType elem) //往线性表位置为pos插入元素elem
{
if(pos<1 || pos > L->count+1)
{
return 0;
}
if(L->count == L->size)
{
ElemType *p = (ElemType *)realloc(L->elem ,(L->size+SIZE)*sizeof(ElemType));
if(p == NULL)
{
return -1;
}
L->elem = p;
L->size += SIZE;
}
for(ElemType i=L->count-1;i>=pos-1;i--)
{
L->elem[i+1]=L->elem[i];
}
L->elem[pos-1]=elem;
L->count +=1;
return 0;
}
ElemType DeleteList(SqList *L, ElemType pos) //删除线性表中位置为pos的元素elem
{
if(pos<1 || pos>L->count)
{
return 0;
}
for(int i=pos; i <= L->count; i++)
{
L->elem[i-1]=L->elem[i];
}
L->count --;
return 0;
}
ElemType LocateList(SqList L,ElemType elem) //获取元素elem在线性表中L中的位置
{
ElemType i;
for(i=0;i<=L.count-1;i++)
{
if(L.elem[i]==elem)
{
return i+1;
}
}
return 0;
}
ElemType PrintList(SqList L) //打印线性表
{
for(ElemType i=0;i<L.count ;i++)
{
printf("L.elem[%d] = %d\n", i+1, L.elem[i]);
}
printf("\n");
return 0;
}
ElemType main()
{
SqList L;
InitList(&L);
// InsertList(&L, 1, 3);
// InsertList(&L, 2, 4);
// InsertList(&L, 3, 5);
// InsertList(&L, 4, 6);
// InsertList(&L, 5, 2);
// InsertList(&L, 99, 2);
for(ElemType i = 0; i<=10; i++)
{
InsertList(&L, i, i+1);
}
PrintList(L);
// printf("L:\n%d\n", L.count);
// printf("\n%d\n", LocateList(L, 2));
DeleteList(&L, 8);
PrintList(L);
}
线性表(c)
于 2021-10-21 21:38:10 首次发布