线性表特点:
1.每一个线性表有唯一的第一元素
2.每一个线性表有唯一的最后元素
3.除了最后一个元素之外的每一个元素都有唯一后继
4.除了第一个元素外的每一个元素都有唯一前驱
基本操作:
1.结构初始化操作
InitList(&L) // 初始化
2.结构销毁操作
DestroyList(&L) // 销毁
3.引用型操作
EmptyList(L) //是否为空
ListLength(L) // 长度
PriorElem(L,cur_e,&pre_e)
getElem(L,i,&e) //获取
ListTraverse(L,visit()) //遍历线性表
4.加工型操作
ClearList(&L) //清除
PutElem(&L,i,&e) //放置
ListInsert(&L,i,e) //插入
ListDelete(&L,i,&e) //删除
【特别强调】 C/C++中带&号操作的并不是引用型操作而是加工型操作,凡是需要取地址然后把值带回来的操作都是加工型操作,引用型操作是指只对元素进行调用,只进行一次操作,需要进行两次或多次操作的都是加工型操作。
解决实际问题:
实现两个集合求并集:A=A U B.
算法思想:扩大线性表LA,将存于线性表LB中而不存在于线性表LA中的元素插入到线性表LA中。
有序表:
线性表之间的元素可以比较,元素具有递增或递减的规律。
归并两个“其元素按值非递减有序排列”的有序表LA和LB,则LC也具有相同的性质;
算法思想:
1.初始化LC为空表
2.分别从LA和LB中取元素ai和bi ;
3.若ai<=bi则把ai插入到LC中,否则插入bi
4.重复2,3直到元素取完。