顺序表的基本操作——初始化表

本文对比分析了静态链表和动态链表的初始化过程以及动态链表的增容操作。静态链表使用固定大小的数组存储,初始化时逐个元素赋值为0;动态链表则利用指针分配内存,初始化时不需遍历清理数据。动态链表在增加长度时,需要重新分配内存并复制原有数据。
摘要由CSDN通过智能技术生成

为避免表中留有脏数据,首先要对表进行初始化,使之后创建表内数据时,不会受到影响。

#include<stdio.h>

#define MaxSize 10    /*此处创建的是静态链表,此句默认了表的最大数据长度10,后面对此表的长度最大长度不能进行修改;若是动态链表则还可以通过创建指针进行修改*/

tppedef struct{int data[MaxSize];                       /*静态链表采用数组存储并调用,所以用*/

                       int length;}sqList;                        /*data[MaxSize]*/

void InitList(sqList &L){for(int i=0; i<=MaxSize; i++)

                                            L.data[i]=0;

                                            L.length=0;}        /*此处在遍历顺序表,并赋值0,清理表中可能存留的脏数据,且此时表的长度为0;*/

int main(){sqList L;

                InitList(L);

                return 0;}

与此相对比的动态数据表:

#include<stdio.h>

#define InitSize 10                /*此处于静态链表一样,需调用#define InitList10来默认表的长度,不同是的,动态链表可以修改表长;*/

typedef struct {int *data;                        /*动态链表采用指针*/

                        int MaxSize;

                        int length;}sqList;

void InitList(sqList &L){ L.data=(int *)malloc(InitSize*sizeof(int));

                                                    L.MaxSize =InitSize;                     /*清除脏数据无需像静态链表*/

                                                    L.length =0;}       /* 一样,完整的遍历数组,只需将L.length =0;*/

void IncreaseList(sqList &L, int len){               int *p=L.data;

 /*有malloc就必有free;                                       L.data=(int *)malloc((L.length +len)*sizeof(int));

 动态链表增加链表长度时,                           for(int i=0; i<L.length; i++)

 需要再创建一个指针,将*p指向                          L.data[i]=p[i];       

*data,之后改变L.data的长度,                        L.MaxSize=L.MaxSize +len;

再进行遍历,并将指针p的值一一传回L.data*/    free(p);}

                                                         

int main(){sqList L;

                InitList(L);

                IncreaseList(L,5);

                return 0;}

以上是静态链表和动态俩表在初始化表和增加表长的区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值