一 線性表的定義:
ADT 線性表(List)
Data
線性表的數據對象集合爲{a1,a2,......,an},每個元素的類型均爲DataType。其中,除第一個元素a1外,每一個元素有且只有一個直接前驅元素,除了最後一個元素an外,每一個元素有且只有一個後繼元素。數據元素之間的關係是一對一的關係。
Operation
InitList ( *L ) : 初始化操作,建立一個空的線性表L。
ListEmpty(L): 若線性表爲空,返回true,否則返回false。
ClearList(*L):將線性表清空。
GetElem(L,i,*e):將線性表L中的第i個位置元素值返回給e。
LocateElem(L,e):在線性表L中查找與給定值e相等的元素,如果查找成功,返回該元素在表中序號表示成功;否則,返回0表示失敗。
ListInsert(*L,i,e):在線性表L中的第i個位置插入新元素e。
ListDelete(*L,i,*e):刪除線性表L中第i個位置元素,並用e返回其值。
ListLength(L):返回線性表L的元素個數。
二 求兩個線性表集合A和B的並集操作
思路:循環集合B中的每個元素,判斷當前元素是否存在A中,若不存在,則插入到A中即可。
/*將所有的在線性表Lb中但不在La中的數據元素插入到La中*/
void union(List *La,List Lb)
{
int La_len,Lb_len,i;
ElemType e; /*聲明與La和Lb相同的數據元素e*/
La_len=ListLength(La); /*求線性表的長度*/
Lb_len=ListLength(Lb);
for(i=1;i<=Lb_len;i++)
{
GetElem(Lb,i,e); /*取Lb中第i個數據元素賦給e*/
if(!LocateElem(La,e,equal)) /*La中不存在和e相同數據元素*/
ListInsert(La,++La_len,e); /*插入*/
}
}