线性表
重点:
- 线性表的逻辑结构
 - 线性表的顺序存储结构
 - 线性表的链式存储结构
 - 一元多项式的表示及相加
 
定义:
线性表n(n>=0)的同质元素的有限数列,每个元素有唯一的前驱和后继。首元素只有后继,尾元素只有前驱,n为0时是空表,n叫做线性表的长度。
线性表的基本操作
- 初始化 InitList(&L)
 - 销毁 DestroyList(&L)
 - 清空 ClearList(&L)
 - 判断空表 ListEmpty(L)
 - 求长度 ListLength(L)
 - 取i值 GetElem(L,i,&e)
 - 定位 LocateElem(L,e,compare())
 - 求前驱 PriorElem(L,cur_e,&pre_e)
 - 求后继 NextElem(L,cur_e,&next_e)
 - 插入 ListInsert(&L,i,e)
 - 删除 ListDelete(&L,i,&e)
 - 遍历 ListTraverse(L,visit())
 - 复制 Copy(L,C) (L复制到C)
 - 合并 Merge(A,B,C) (把A,B合并到C中)
 
顺序存储结构
所有数据类型相同,占用空间大小相同。查找数据方便,常用数组表示顺序存储结构。
数组特点(用数组表示的原因)
- 数组元素间连续
 - 数组所有元素数据类型相同
 
由于线行表的长度可变,所需的最大存储空间随问题的不同而不同。下面是线性表的动态分配顺序存储结构
顺序表的插入操作
顺序表的删除操作
- 表长为n的顺序存储的线性表,当在任何位置上插入和删除相等时,插入一个元素所需移动元素平均个数为n/2,删除一个元素所需移动的平均个数为(n-1)/2.
 
顺序存储结构特点
- 顺序存储的线性表可以随机存取其中任意元素
 - 数据元素最大个数需预先确定
 - 需要预先确定最大个数
 - 插入和删除效率低
 - 存储空间不变扩充
 
链式存储结构
- 存储数据元素的值
 - 存储各数据元素之间的逻辑顺序
 - 将结点分为两部分:数据域(存储数据元素的值),指针域(下一个存储结点的位置)
 - 只含一个指针域的链表称为单向链表
 
结点的描述与实现
- 带指针的结构体类型的描述
 
结点的实现
malloc(),realloc(),sizeof(),free()
动态分配
s=(LNode*)malloc(sizeof(LNode))
动态分配
free(s)
结点赋值
常见指针操作
q=p;
 q=p->next;
 p=p->next;
 q->next=p;
 q->next=p->next;
单链表的初始化
单链表插入
- 后插入
 
- 前插入
 
建立非空链表
- 头插法
 
- 尾插入法
 
两段论
- 对象->next=前驱
 - 前去->next=对象
 
本章未完,如果有错误欢迎大家指正。










