顺序表

来源:互联网 发布:网络系统解决方案 编辑:程序博客网 时间:2024/05/21 10:55
#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   -1typedef 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
原创粉丝点击