一直想学习数据结构,但每次总是匆匆的看看相关的书,没有编写具体代码。
为了加强学习效率,也方便后期复习,以后每学习一部分,就发表一篇博文来纪念。由于能力有限,难免有些错误,欢迎大家指导交流。
先从最简单的数据结构—线性链表开始。线性链表特点:(1)存在唯一的第一个数据元素即头部;(2)存在唯一的最后个数据元素即尾部;(3)除第一个元素外,集合中每个元素都有唯一前驱;(4)除最后个元素外,集合中每个元素都有唯一后继。
线性链表根据存储方式分为线性存储和链式存储。线性存储方式对应着顺序表示,链式存储方式对应着链式表示。
1,线性表的顺序表示
线性表的顺序表示是用一组地址连续的存储单元依次来存储线性表的数据单元。
顺序存储的结构体定义:
typedef int ElemType;
typedef struct SqList{
ElemType *elem; //存储空间基地址
int length;//结构体长度
int listsize; //当前的存储容量
}
顺序存储计算内“物理地址相邻”来表示数据元素之间的逻辑顺序,所以查找方便,可以随机存取任一元素。但插入、删除元素时,需要移动的数据量大。所以一般采用链式存储结构。
2,线性表的链式表示
2.1 存储结构定义
typedef struct LNode{
ElemType data; //节点数据域
struct LNode *next; //节点指针域,指向下个元素
};
typedef struct LNode NODE;
ps:LNode为定义的结构体类型名,NODE为定义结构体类型别名,可以等效?
头文件: