重溫數據結構——(2)

線性表

線性表是最簡單且最常用的一種數據結構。下面將 介紹它的概念、存儲方法和基本運算:

 

線性表的基本概念:

    若至少含有一個結點,則除了起始結點有且僅有一個前趨結點;除了終端結點其他結點有且僅有一個後繼結點。

 

基本運算:

    通過以下一些基本運算來實現一些特定操作,或者實現一些實際問題:

    1.初始化InitList,建立一個空表sq

    2.求線性表的長度

    3.求線性表中第i個元素GetElem(sq,i)

    4.按值查找Locate(sq,x)

    5.插入元素InsElem(sq,x,i)

    6.刪除元素DelElem(sq,i)

    7.輸出元素值DispList(sq)

儲存結構:

順序表

特點:邏輯結構中相鄰的結點在存儲結構中仍然相鄰

定義如下:

#define  MAXSIZE 100

typedef struct

{

    ElemType data[MAXSIZE];//存放數據域

    int len;//當前線性表長度

} Sqlist;

優點:用一維數組實現,空間利用率高;能隨機存取

缺點:操作不方便

 

單鏈表

特點:在結點中使用指針來串聯成線性表,使得邏輯上相鄰的結點,在物理結構上可以不相鄰

定義如下:

typedef struct node

{

    ElemType data;//數據域

    struct node *next;//指針域,指向下一個相鄰節點

} Slink;

優點:物理結構上靈活,操作方便;查找後繼結點方便

缺點:不可隨機存取;查找前趨結點比較困難

循環單鏈表

特點:與單鏈表相同,只是最後一個結點的指針域不爲空,而是指向頭結點,從而構成一個環

 

雙鏈表

特點,與單鏈表相比,多了一個前趨指針

定義如下:

typedef struct node

{

    ElemType data;//數據域

    struct node *prior,*next;//分別指向前趨結點和後繼結點的指針

} Dlink;

優點:保持了單鏈表的優勢之後,又使查找前趨結點變的方便了;

缺點:需要額外的指針域,空間利用率降低;

循環雙鏈表

特點:保持雙鏈表的基礎上,是尾結點與頭結點相連

 

(待續...)

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