顺序表的实现

0 阅读2分钟

顺序表要用到的英文

1 Element_t 元素 2 SeqTable 结构体-表头 3 creatSeqTable 创建表头:是一种封装,把创建表头和创建一个线性的连续空间绑定在一起 4 releaseSeqTable 释放表头,同上; 有创建,也有释放它们是一对的符合工程师思想

5 pushbackSeqTable 表头尾插法; 4 showSeqTable 展示表头

在写完...include"*****.h"后,我们可以在test中根据****.h的代码写一定的逻辑,

在编写代码的时候我们要一直考虑malloc申请的值为null的情况,我们也要考虑各种各样的越界的情况,

在一个变量前面加上const那么这个变量不能改变;

用static来进行权限的限制,

image.png

栈中的数据是一开始在编译时,每一个变量占用多少空间是确定的,不能自己在运行时改变:就是你申请了一个*p指针那么这个指针就占用8个字节(在64位编译器中),这个指针占用的空间大小(8个字节不能改变),它们的数值能够改变(指向不同的地方);

堆中的数据是malloc申请出来的,它可以在运行时改变空间的大小;堆区的东西没有名字,我们可以通过栈上的东西进行访问堆上的空间,倘如一个空间被申请了但是没有释放,而且栈上也没有指向这个空间的指针,那么这一片的堆空间就会变成一片垃圾;

我们用int *p = malloc(sizeof(int) * 6);这个操作就是等于在堆上申请了一块24个字节的空间,我们是int类型进行访问也就是4个字节的进行访问,这样就等同于一个int a[6]的一个数组,

image.png

线性表有两种表示方法

1 表头在栈上,连续空间在堆上。

image.png 如果这个表头它出栈了那么就会造成一个资源空间的一个浪费;

2 表头在堆上,连续空间也在堆上。

image.png 这个表头可以被很多个别的函数引用