准备要考研了,发现好多关于计算机的专业要求都有数据结构这本书,所以今天开始对复习数据结构知识内容统一规划整理。
记录《数据结构》C语言第2版,人民邮电出版社。
另外,知识内容中额外借鉴增加的地方我都会标注出处和链接。
2021.10.5
一、线性表
1.线性表
具有相同特性的数据元素的一个有限序列。
(1)逻辑特征
①在非空线性表,有且仅有一个开始节点a1,它没有直接前驱,而仅有一个直接后继a2。
②有且仅有一个终端节点an,它没有直接后继,而仅有一个直接前驱an-1。
2.线性表的顺序表示和实现
(1)定义
把逻辑相邻的元素在物理相邻中储存起来。
(2)线性表中任意一个数据元素都可以随机存取,所以线性表的顺序存储结构是一种随机存取的存储结构。
3.线性表中顺序表的初始化
(1)算法步骤
①为顺序表L动态分配一个预定义大小的数组空间,使elem指向这段空间的基地址。
// 动态分配内存
SqList L;
L.data = (ElementType*) malloc(sizeof(ElemType*)MaxSize);
①malloc(m):开辟字节长度为m的地址空间。
②sizeof(x):计算变量x的长度。
②将表的当前长度设为0。
(2)算法描述:
Status InitList(SqList &L)
{
//构造一个空的顺序表
L.elem = new ElemType{MAXSIZE}; // 为顺序表动态分配一个大小为MAXSIZE的数组空间
if(L.elem)
exit(OVERFLOW); // 存储空间分配失败退出
L.length = 0;
reutrn OK;
}
(3)算法实现