01 顺序表创建和初始化

CODE

#include <iostream>
#define MAXSIZE 10
#define INITIAL_SIZE 10
// 01 使用静态分配/动态分配方法初始化一个顺序表

//=====================================================
// 静态分配
// 此顺序表包含一个装int类型的数组、顺序表的长度
typedef struct{
    int data[MAXSIZE];
    int length;
}SequenceList01;

// 1. 应该将顺序表的长度设置为0
// 2. 应该将顺序表的内容设置为0或其它,否则讲出现脏数据
void initialize01(SequenceList01 &L){
    // L.data = {0}; 我们初始化可以这样初始化,但不能这样修改
    for(int i = 0; i < MAXSIZE; i++){
        L.data[i] = 0;
    }
    L.length = 0;
}

//======================================================
// 动态分配
// 通过指针实现扩容
typedef struct{
    int *pt;          
    int length;       
    int maxsize;        // 最大容量
}SequenceList02;

// 申请一个能放数据的空间,大小为 单个数据大小*初始变量个数
void initialize02(SequenceList02 &L){
    L.pt = (int*) malloc(sizeof(int)*INITIAL_SIZE);
    L.length = 0;
    L.maxsize = INITIAL_SIZE;
}

void expand(SequenceList02 &L2,int unit){
    int *new_pt = L2.pt;
    L2.pt = (int*) malloc(sizeof(int)*(INITIAL_SIZE+unit));
    for (int i = 1; i <= L2.length; i++){
        L2.pt[i-1] = new_pt[i-1];
    }
    L2.maxsize += unit;
    free(new_pt);
}

//==================================================
int main() {
    SequenceList01 L1;
    initialize01(L1);
    SequenceList02 L2;
    initialize02(L2);
    expand(L2,5);
}



解释

  1. 静态创建线性表
    静态创建线性表
  2. 动态创建线性表
    动态创建线性表
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值