数据结构基本概念
1. 概念:
程序 = 数据结构 + 算法
- 数据结构是程序操作对象的结构
- 算法是程序操作对象的方法
不同的数据结构与不同的算法决定了程序的效率。
2. 程序效率的衡量指标:
1. 时间复杂度:数据量增长与程序运行时间增长呈现的比例函数关系
2. 空间复杂度:数据量增长与程序运行空间增长呈现的比例函数关系
3. 数据结构的分类:
1. 逻辑结构:
1. 线性结构:一对一关系
2. 树形结构:一对多关系
3. 图形结构:多对多关系
2. 存储结构:
1. 顺序存储结构:
优点:
- 存储空间连续,可以利用指针偏移间接访问
缺点:
- 想要在两个数据中插入数据困难(插入效率低)
- 存储空间要求必须连续
2. 链式存储结构:(在存储元素时需加入下一个存储元素的地址)
优点:
- 插入与删除数据效率高
- 可以利用堆区小空间进行链式存储
缺点:
- 访问元素不如指针偏移方便
- 存储时增加额外的空间开销
3. 索引存储结构 4. 散列存储结构

顺序表
在栈区之中定义的数组在定义时就已经指定了存储空间。如果访问了数组之外的空间时就会产生段错误,但是利用顺序表就可以在堆区之中定义一个自定义长度的数组了。
1. 本质等同于数组,通过申请堆区空间存储数据,通过首地址完成对所有空间的访问。
DataType *CreateSeqlist(int len) {
DataType *pret = NULL;
pret = malloc(len * sizeof(DataType));
if (NULL == pret) {
perror("fail to malloc");
return NULL;
}
return pret;
}
根据泛型编程理念,在被调函数中直接传入我们想要的数组的大小, 函数会申请对应的 大小的存储空间,然后只需要利用返回的指针间接访问堆区数组的每个元素进行存储或者改变的效果。




