#include <stdio.h>
#define MAXSIZE 20
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
typedef int ElemType;
typedef struct {
ElemType data[MAXSIZE]; //或者指针实现
int length;
}SqList;
Status initList(SqList *L);
void traverseList(SqList L);
Status getElem(SqList L, int i, ElemType *e);
Status listInsert(SqList *L, int i, ElemType e);
Status listDelete(SqList *L, int i, ElemType *e);
int main(void)
{
int i;
ElemType e;
SqList L;
initList(&L);
for (i = 1; i <= MAXSIZE; i++) {
e = i * i * i;
listInsert(&L, i, e);
}
getElem(L, 5, &e);
printf("%d\n", e);
traverseList(L);
return 0;
}
Status initList(SqList *L)
{
L->length = 0;
return OK;
}
Status getElem(SqList L, int i, ElemType *e)
{
if (L.length == 0 || i < 1 || i > L.length) {
return ERROR;
}
*e = L.data[i - 1];
return OK;
}
Status listInsert(SqList *L, int i, ElemType e)
{
if (L->length == MAXSIZE) {
return ERROR;
}
if (i < 1 || i > L->length + 1) {
return ERROR;
}
int k;
if (i <= MAXSIZE) {
for (k = L->length -1 ; k >= i - 1 ; k--) {
L->data[k + 1] = L->data[k];
}
}
L->data[i - 1] = e;
L->length++;
return OK;
}
Status listDelete(SqList *L, int i, ElemType *e)
{
if (L->length == 0) {
return ERROR;
}
if (i < 1 || i > L->length) {
return ERROR;
}
*e = L->data[i - 1];
int k;
for (k = i; k < L->length; k++) {
L->data[k - 1] = L->data[k];
}
L->length--;
return OK;
}
void traverseList(SqList L)
{
int i;
for (i = 0; i < L.length; i++) {
printf("%2d: %4d\n", i, L.data[i]);
}
}