#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "SequenceList.h"
int InitList(SqList *L)
{
L->data = (ElemType *)malloc(sizeof(ElemType) * MAXSIZE);
if (L->data == NULL)
{
return FAILURE;
}
L->size = MAXSIZE;
L->length = 0;
return SUCCESS;
}
int ListEmpty(SqList *L)
{
return (L->length == 0) ? TRUE : FALSE;
}
int ListInsert(SqList *L, int i, ElemType e)
{
ElemType *tmp = L->data;
ElemType *p;
if (L->length >= L->size)
{
return FAILURE;
}
if (i <= 0 && i > L->length)
{
return FAILURE;
}
for (p = L->data + L->length - 1; p >= L->data + i - 1; p--)
{
memcpy(p + 1, p, sizeof(ElemType));
}
memcpy(L->data + i - 1, &e, sizeof(ElemType));
L->length++;
return SUCCESS;
}
int ListTraverse(SqList *L, void (*visit)(ElemType *))
{
int i;
for (i = 0; i < L->length; i++)
{
visit(L->data + i);
}
return SUCCESS;
}
#include <stdio.h>
#include "SequenceList.h"
void print(ElemType *e)
{
printf("%d\n", *e);
}
int main()
{
int ret, i;
SqList list;
ret = InitList(&list);
if (FAILURE == ret)
{
printf("INIT FAILURE!\n");
}
else
{
printf("INIT SUCCESS!\n");
}
ret = ListEmpty(&list);
if (TRUE == ret)
{
printf("List is empty!\n");
}
else
{
printf("List is not empty");
}
for (i = 1; i <= 5; i++)
{
ret = ListInsert(&list, i, i);
if (FAILURE == ret)
{
printf("INSERT %d FAILURE!\n", i);
}
else
{
printf("INSERT %d SUCCESS!\n", i);
}
}
ret = ListTraverse(&list, print);
if (FAILURE == ret)
{
printf("TRAVERSE FAILURE!\n");
}
else
{
printf("TRAVERSS SUCCESS!\n");
}
return 0;
}
下面是他的库文件:
#ifndef _SEQUENCE_H_
#define _SEQUENCE_H_
#define MAXSIZE 10
#define FAILURE -1
#define SUCCESS 0
#define TRUE 0
#define FALSE -1
typedef int ElemType;
struct SequenceList {
ElemType *data;
int size;
int length;
};
typedef struct SequenceList SqList;
extern int InitList(SqList *L);
extern int ListEmpty(SqList *L);
extern int ListInsert(SqList *L, int i, ElemType e);
extern int ListTraverse(SqList *L, void (*visit)(ElemType *));
#endif