首页 > 其他 > 详细

顺序表-静态分配与动态分配的实现

时间:2020-06-13 14:42:27      阅读:65      评论:0      收藏:0      [点我收藏+]

所谓顺序表即以顺序存储的方式实现线性表

以下为静态分配实现

#include <stdio.h>
#define MaxSize 10    //最大长度
typedef struct{
    int data[MaxSize];
    int length;        //当前长度
}SqList;            //顺序表静态定义

void InitList(SqList &L){
    for(int i = 0; i < MaxSize; i++)    //设置默认值可省略
        L.data[i] = 0;
    L.length = 0;        //length默认值不可省略
}

int main(){
    SqList L;
    InitList(L);

    return 0;
}

以下为动态分配实现

#include <stdlib.h>

#define InitSize 10        //默认最大长度
typedef struct{
    int *data;
    int MaxSize;    //最大容量
    int length;        //当前长度
}SeqList;

void InitList(SeqList &L){
    L.data = (int *)malloc(InitSize*sizeof(int));
    L.length = 0;
    L.MaxSize = InitSize;
}

//增加动态数组的长度
void IncreaseSize(SeqList &L, int len){
    int *p = L.data;
    L.data = (int *)malloc(sizeof(int)*(L.MaxSize + len));
    for(int i = 0; i < L.length; i++){
        L.data[i] = p[i];        //将数据复制到新区域
    }
    L.MaxSize = L.MaxSize + len;
    free(p);    //释放原有空间
}

int mian(){
    SeqList L;
    InitList(L);
    IncreaseSize(L,5);

    return 0;
}

//虽然实现了动态分配,但需要将原数据复制到新区域,时间开销较大

 

顺序表-静态分配与动态分配的实现

原文:https://www.cnblogs.com/swefii/p/13113677.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!