天天看點

線性表基礎

線性表的抽象資料類型定義:

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); 删除線性表中第i個位置元素,并用e 傳回其值。

                    ListLength(L);        傳回線性表L的元素個數。

        endADT

例:

将所有的線上性表Lb中但不在La中的資料元素插入到La中

void unionL(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)) /*La中不存在和e相同的資料元素*/

                  {

                      ListInsert(La,++La_len,e);   /*插入*/

                  }

              }

          }