一、顺序表
1.顺序表:用一段地址连续的存储单元依次存储数据元素的线性结构。
2.地址连续的空间,一般情况下采用数组,数组有静态数组和动态数组
因此,顺序表分为静态顺序表、动态顺序表
静态顺序表:
结构体变量分别为:一个数组、有效元素的个数
DataType array[MAX_SIZE]; //存储数据的空间
// int size; //1.有效数据 2.可通过下标方式进行访问
动态顺序表:(可以联想为他是一个桶)
结构体变量为:数据块指针(桶在哪)、当前有效数据个数(有多少水)、容量(痛的容量)
DataType *array;
int capacity;
int size;
在这里存在一个扩容的过程
1.容量变大 2.开辟空间 3.将老数据写进新空间 4.释放老空间 5.将新空间挂起
pSLD->capacity *= 2;
DataType *NewArray = (DataType *)malloc(sizeof(DataType)*pSLD->capacity);
int i;
for (i = 0; i < pSLD->size; i++)
{
NewArray[i] = pSLD->array[i];
}
free(pSLD->array);
pSLD->array = NewArray;
具体的一些代码实现过程戳这里啦~
https://blog.youkuaiyun.com/Z_JUAN1/article/details/80749333
二、链表
链表:一种链式存储的线性表,用一组地址任性的存储单元存放线性表的数据元素,称存储单元为一个节点。
- DataType data;
- struct SListNode *pNext;
链表分为:单链表、双链表、双向循环链表
具体一些代码点这里啦~
https://blog.youkuaiyun.com/z_juan1/article/details/80729933