您的位置:首页 > 理论基础 > 数据结构算法

建立顺序表

2014-01-11 14:34 295 查看
//算法功能:建立顺序表

//算法思路:先判断拟建立的顺序表的长度n是否大于顺序表初始化时

//的存储容量LIST_INIT_SIZE,如果n > LIST_INIT_SIZE,

//则按照n重新分配顺序表大小,反之则依次将数据元素存储到顺序表中。

#include <stdio.h>

#include <stdlib.h>

#define OVERFLOW -2

#define OK 1

#define ERROR 0

#define LIST_INIT_SIZE 100

#define LISTINCREMENT 10

typedef int ElemType;

typedef int Status;

//定义顺序表存储结构

typedef struct

{

        ElemType *elem;

        int length;

        int listsize;

}SqList;

//初始化顺序表

Status InitList_Sq(SqList &L)

{

        L.elem = (ElemType*) malloc (LIST_INIT_SIZE * sizeof(ElemType));

        if(!L.elem)

                exit(ERROR);

        L.length = 0;

        L.listsize = LIST_INIT_SIZE;

        return OK;

}

void CreateList(SqList &L, int len)

{

        if(len > LIST_INIT_SIZE)   //顺序表大小大于初始化大小,重新分配空间

        {

                L.elem = (ElemType*) realloc (L.elem, len*sizeof(ElemType));

                L.listsize = len;

        }

        printf("请输入顺序表元素: \n");

        for(int i = 0; i < len; i++)

                scanf("%d", &L.elem[i]);

        L.length = len;

        printf("建立的顺序表为:\n");

        for(int i = 0; i < len; i++)

                printf("%d ", L.elem[i]);

        printf("\n顺序表一共 %d 个元素。\n",L.length);

}

int main()

{

        SqList L;

        int Sqlen;

        if(!InitList_Sq(L))

        {

                printf("初始化顺序表失败!\n");

                exit(ERROR);

        }

        printf("输入顺序表个数:\n");

        scanf("%d", &Sqlen);

        CreateList(L, Sqlen);

        return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构