线性表的类型定义

线性表(linear_list)是n个数据元素的有限序列。在稍复杂的线性表中,一个数据元素可以由若干个数据项(data iteam)组成。这种情况下,常把数据元素称为记录(record),含有大量记录的线性表又称文件(file)。 同一数据对象相邻数据元素之间存在着序偶关系。(好吧又到了数学上了,数学表示就算了···)

线性表的顺序表示和实现

线性表的顺序表示是用一组地址连续的存储单元一次存储线性表的数据元素。线性表的这种机内表示称作线性表的顺序存储结构或顺序映像(sequential mapping)。 在此由于线性表的长度可变,且所需最大存储空间随问题不同而不同,则在C语言中可用动态分配的一维数组,如下描述:

#define LIST_INIT_SIZE 100  //线性表存储空间的初始分配量
#define LISTINCREMENT 10  //线性表存储空间的增量
typedef struct {
    ElemType    *elem;  //存储空间基址
    int         length;  //当前长度
    int         listsize;  //当前分配的存储容量(以sizeof(ElemType)为单位)
} SqList;

(个人感觉这个结构体非常好,但是很少会用到,应用场景也比较稀疏。) 这种存储方式的弱点:在做插入和删除操作时,需移动大量元素。

线性表的链式表示和实现

线性表的链式存储结构(线性链表/单链表)的特点是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。这种存储结构为非顺序映像或链式映像。(C语言表示省略了,链表都会吧···) 线性表的静态单链表存储结构:

#define MAXSIZE 1000  //链表的最大长度
typedef  struct {
    ElemType    data;
    int         cur;
} component,SLinkList[MAXSIZE];

这种描述方法便于在不设“指针”类型的高级程序设计语言中使用链表结构。 另外还有两种链表:循环链表、双向链表。 其实数据结构描述它的逻辑结构就行了,至于存储结构,跟具体环境有关。所以,以后博客中的内容会更注重逻辑结构和相关操作的解释,也可能会用某一具体语言(比如C语言)来帮助描述。


总结自:《数据结构(C语言版)》 清华大学出版社 严蔚敏、吴伟民编著 还是不如某大神写的好啊,博客写的少,某些部分也不知道该怎么解释好。感觉写的太臃肿,将就将就吧,慢慢写写就好了!