线性表的顺序存储结构(c语言实现)
程序员文章站
2022-05-21 11:49:05
...
#include <stdio.h>
#define MAXSIZE 20
#define T 1
#define F 0
typedef int Status;
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int length;
}SqList;
void init(SqList *L);
Status listInsert(SqList* L, int i, ElemType e);
Status listDelete(SqList* L, int i);
Status getElem(SqList L, int i, ElemType* e);
Status listEmpty(SqList L);
void print(SqList L);
int main()
{
int i = 0;
SqList L;
init(&L);
for (; i < 10; i++)
{
listInsert(&L, 1, i);
}
print(L);
listDelete(&L, 1);
listDelete(&L, 2);
print(L);
getElem(L, 1, &i);
printf("%d\n", i);
return 0;
}
void init(SqList *L)
{
L->length = 0;//(*L).length
}
Status listInsert(SqList *L, int i, ElemType e)
{
int k;
if (MAXSIZE == L->length)
{
return F;
}
if (i < 1 || i > L->length + 1)
{
return F;
}
if (i <= L->length)
{
for (k = L->length - 1; k >= i - 1; k--)
{
L->data[k + 1] = L->data[k];
}
}
L->data[i - 1] = e;
L->length++;
return T;
}
Status listDelete(SqList* L, int i)
{
int k;
if (listEmpty(*L))
{
return F;
}
if (i < 1 || i > L-> length)
{
return F;
}
if (i < L->length)
{
for (k = i; k < L->length; k++)
{
L->data[k - 1] = L->data[k];
}
}
L->length--;
return T;
}
Status getElem(SqList L, int i, ElemType* e)
{
if (listEmpty(L) || i < 1 || i > L.length)
{
return F;
}
*e = L.data[i - 1];
return T;
}
Status listEmpty(SqList L)
{
if (0 == L.length)
{
return T;
}
else
{
return F;
}
}
void print(SqList L)
{
int i = 0;
if (listEmpty(L))
{
printf("List is empty!\n");
}
else
{
for (; i < L.length; i++)
{
printf("%d\n", L.data[i]);
}
}
}
上一篇: 循环队列的C语言实现 --- 数据结构之队列的顺序存储
下一篇: 历届试题:发现环