【数据结构】线性表(WD)

目录

顺序表的实现——静态分配

#include <bits/stdc++.h>

#define MaxSize 10 //定义最大长度

using namespace std;

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; //顺序表初始长度为0
}

int main()
{
    SqList L; //声明一个顺序表

    InitList(L); //初始化顺序表

    for (int i = 0; i < MaxSize; i++)
    {
        printf("data[%d]=%d\n", i, L.data[i]);
    }

    return 0;
}

output
data[0]=0
data[1]=0
data[2]=0
data[3]=0
data[4]=0
data[5]=0
data[6]=0
data[7]=0
data[8]=0
data[9]=0

顺序表的实现——动态分配

#include <bits/stdc++.h>

#define InitSize 10 //默认的最大长度

using namespace std;

typedef struct
{
    int *data;   //指示动态分配数组的指针
    int MaxSize; //顺序表的最大容量
    int length;  //顺序表的当前长度
} SeqList;       //顺序表的当前定义

//初始化顺序表
void InitList(SeqList &L)
{
    //用malloc函数申请一片连续的存储空间
    L.data = (int *)malloc(InitSize * sizeof(int));
    L.MaxSize = InitSize;
    L.length = 0;
}

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

int main()
{
    SeqList L; //声明一个顺序表

    InitList(L); //初始化顺序表

    cout << L.MaxSize << endl;

    IncreaseSize(L, 5);

    cout << L.MaxSize << endl;

    return 0;
}

output
10
15

上一篇:速度单位:MHZ、GHZ、Mbps


下一篇:网件 Orbi RBKE963 评测