激据猪构 线性表的逻辑特征是: 在非空的线性表中,有且仅有一个开始结点a1, 它没有直接前趋,而仅有一个直接后继a2;有 且仅有一个终端结点an,它没有直接后继,而 仅有一个直接前趋an-1;其余的内部结点 a(2≤i≤n-1)都有且仅有一个直接前趋ai-1 和一个直接后继a+1。 结论:线性表是一种典型的线性结构。 数据的运算是定义在逻辑结构上的,而运算的具 体实现则是在存储结构上进行的。 线性表的抽象数据类型的定义:P19
数据结构
数据结构 例2-1利用两个线性表LA和LB分别表示两个集合A 和B(即线性表中的数据元素即为集合中的成员), 现要求一个新的集合A=AUB。 void union(List &La,List Lb) La_len=ListLength(La); Lb_len=ListLength(Lb); for(i=1;i<=Lb_len;i++) GetElem(Lb,i,e); if(!LocateElem(La,e,equal)) ListInsert(la,++La_len,e)
数据结构
数据传物 扩展1:利用两个线性表LA和LB分别表示两个集合 A和B,现要求一个新的集合A=A∩B。 void JiHeJiao(List &La,List Lb) La_len=ListLength(La); Lb_len=ListLength(Lb); for(i=1;i<=La_len;i++) GetElem(La,i,e); if(!LocateElem(Lb,e,equal)) ListDelete(la,i,e); -i;-La_len;
数据结构
数据结构 例2-2己知线性表LA和线性表LB中的数据元素按 值非递减有序排列,现要求将LA和LB归并为一 个新的线性表LC,且LC中的元素仍按值非递减 有序排列。此问题的算法如下: void MergeList(List La,List Lb,List &Lc) InitList(Lc) i=j=1k=0; La_len=ListLength(La); Lb_len=ListLength(Lb); while((i<=La_len)&&(j<=Lb_len))
数据结构
GetElem(La,i,ai);getElem(Lb,j, if(ai<=bj) ListInsert(Lc,++k,ai);++i;} else ListInsert(Lc,++k,bj);++j;} } while(i<=La_len) GetElem((La,i++,ai); ListInsert(Lc,++k,ai);} while(j<=Lb_len) GetElem((Lb,j++,bj); ListInsert(Lc,++k,bj);}
数据结构