線性表的抽象數據類型

一  線性表的定義:

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);   /*插入*/

}

}

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章