【資料結構之線性表總結】

我是太陽啦啦啦發表於2017-10-08

前言:

這幾天在學習資料結構,引用書中的一句話:資料結構 = 程式 + 演算法;本篇部落格作為一個知識的總結,希望給大家帶來幫助.

核心 :

線性表定義

從字面意義來看,呈線性,所以說,它是一種線性結構,現在我們來看書中的定義:線性表是由n(n>=0)個資料元素組成的有窮序列.

線性表特徵

  • 一對一的關係
  • 若結點不為0,除了起始結點沒有直接前驅外,其他每個結點有且僅有一個直接前驅,
  • 除了終端結點沒有直接後繼外,其他每個結點有且僅有一個直接後繼..

線性表的順序儲存

插入:

void InsertSeqlist(SeqList L,DataType x,int i){
   //將元素x插入到順序表L的第i個資料元素之前
   if(L.length == Maxsize) exit("表已滿");
   if(i < 1 || i > L.length + 1) exit("位置錯")//檢查插入位置是否合法
   for (j = L.length; j >= i;j--)              //初始化i = L.length
       L.data[j] = L.data[j-1];                //依次向後移
   L.data[i-1] = x;                            // 元素x置入到下標為i - 1的位置
   L.length++;                                 //表長度加1

}

刪除:

void DeleteSeqlist(SeqList L,int i){
   //刪除線性表L中的第i個資料結點
   if(i < 1 || i > L.length + 1) exit("位置錯")//檢查插入位置是否合法
   for (j = i,j < L.length;j++)              //第i個元素的下標i-1
       L.data[j-1] = L.data[j];                //依次向左移
 
   L.length--;                                 //表長度減1

}

定位:

void LocateSeqlist(SeqList L,DataType x){
   int i = 0;
   while((i <L.length) && (L.data[i]!=x))         //在順序表中查詢值為x的結點
         i++;
   if( i < L.length ) 
     return i + 1;                                //若找到值為x的元素,返回元素的序號
  else return 0;                                  //未查詢到值為x的元素,返回0
   

}

總結:  

在總結中進步,不斷成長!        

相關文章