转专业到计算机,最近在努力地提高自己的编程能力。数据结构与算法可以说是程序员的内功心法,我也下定决心学好这项内容,因此准备写下这一路的体会。一来鞭策自己不要中途懈怠、半途而废,二来以备将来查看方便。在博客中如果出现错误的话,还望各路大侠不吝赐教 O(∩_∩)O
1 线性表
1.1 概念
- 线性表是最为简单且常见的数据类型,满足线性结构:
- 存在唯一的第一个数据元素
- 存在唯一的最后一个元素
- 除第一个元素外,其余元素都有唯一的前驱元素
- 除最后一个元素外,其余元素都有唯一的后继元素
- 线性表中的数据元素属于同一数据类型。这个数据类型可以是简单的基本数据类型也可以是复杂的结构。
- 在线性表按照存储形式区分可以分为顺序存储结构和链式存储结构,在本篇博客中主要介绍顺序存储结构(顺序表),所谓的顺序存储结构指的是数据元素存储是按照地址连续的方式进行存储的,在C语言中数组就是这样的类型,因此我们可以使用数组来模拟实现顺序存储结构
1.2 C实现顺序表
#define MAX_SIZE 100
typedef char ElemType;
typedef struct{
ElemType data[MAX_SIZE];
int length;
}SqList;
- 我们使用了结构来描述这样一个线性表,数据元素使用数组进行存储,因此是顺序存储结构。
- 我们可以构建更为复杂的线性表,并不局限于这里的数据元素的类型,ElemType
可以是非常复杂的结构。 - 这个线性表有一个长度属性,便于我们之后对这个线性表的操作
1.3 顺序表的基本操作
- 顺序表的初始化操作