線性表簡稱表,是n個具有相同型別的資料元素的有限序列。
線性表中資料元素的個數稱為線性表的長度。長度為零時稱為空表。
線性表中資料元素的型別是同一的。
線性表的順序儲存結構稱為順序表。
儲存結構是資料及其邏輯結構在計算機中的表示;
訪問結構是在乙個資料結構上對查詢操作的時間效能的一種描述。
順序表的類的宣告
const int maxsize=100;
template //模板類
class seqlist
;
無參建構函式
seqlist::seqlist( )
有參建構函式
template
seqlist::seqlist(datatypea[ ], int n)
插入
template
void seqlist::insert(int i, datatype x)
按位查詢
template
datatype seqlist::get(int i )
按值查詢
template
datatype seqlist::get(int i )
單鏈表是用一組任意的儲存單元存放線性表的元素,這組儲存單元可以連續,也可以不連續,甚至可以零散的分布在記憶體中的任意位置為了能正確表示元素之間的邏輯關係,每個儲存單元在儲存資料元素的同時,還必須儲存其後繼元素所在的位址資訊,這個位址資訊稱為指標,這兩部分組成了資料元素的儲存映像,稱為結點。
單鏈表的結點結構
template
struct node
;
單鏈表正是通過每個結點的指標域將線性表資料元素按其邏輯次序鏈結在一起,由於每個結點只有乙個指標域,故稱為單鏈表。
單鏈表中第乙個元素無前驅,所以設頭指標指向第乙個元素所在的結點(稱為開始結點),整個單鏈表的訪問必須從頭指標開始進行,因而頭指標具有標識乙個單鏈表的作用;同時,由於最後乙個元素無後繼,故最後乙個元素所在的結點(稱為終端結點)的指標域為空,即null,也稱尾標誌。
除了開始結點外,其他每個結點的儲存位址都存放在其前驅結點的next域中,而開始結點是由頭指標指示的。
單鏈表由頭指標唯一指定,整個單鏈表必須從頭指標開始進行。
所謂遍歷單鏈表是指按照序號依次訪問單鏈表中的所有結點並且僅僅訪問一次。
單鏈表是順序訪問結構。
單鏈表的類的宣告
template
class linklist
;
遍歷操作
template
void linklist:: printlist( )
}
按位查詢
template
void linklist:: printlist( )
}
按值查詢
template
int linklist:: locate(datatype x)
return 0; //退出迴圈表明查詢失敗
}插入
template
void linklist:: insert(int i, datatype x)
if (p == null) throw"位置"; //沒有找到第i – 1個結點
else
建構函式
template
linklist:: linklist(datatype a[ ], int n)
}
尾插法template
linklist:: linklist(datatype a[ ], int n)
r->next = null;
}刪除
template
datatype linklist:: delete(int i)
if (p == null ||p->next == null) throw "位置";
else
}
析構函式
template
linklist:: ~linklist( )
}
迴圈鍊錶
插入template
void linklist::insert(int i, datatype x)
if (p == null) throw"位置";
else
}
雙鏈表
結點結構
template
struct dulnode
;
順序表和單鏈表的比較
結構的儲存密度:
順序表:需要預分配儲存空間,如果預分配得過大,造成浪費,若估計得過小,又將發生上溢;
鍊錶:不需要預分配空間,只要有記憶體空間可以分配,單鏈表中的元素個數就沒有限制。
結點的儲存密度:
順序表:結點的儲存密度為1(只儲存資料元素),沒有浪費空間;
鍊錶:結點的儲存密度<1(包括資料域和指標域),有指標的結構性開銷。
若線性表需頻繁查詢卻很少進行插入和刪除操作,或其操作和元素在表中的位置密切相關時,宜採用順序表作為儲存結構;若線性表需頻繁插入和刪除時,則宜採用鍊錶做儲存結構。
當線性表中元素個數變化較大或者未知時,最好使用鍊錶實現;而如果使用者事先知道線性表的大致長度,使用順序表的空間效率會更高
資料結構 第二章總結
線性表是由n 0 個資料元素組成的有限序列。我們學習了線性表上定義的基本運算 有構造空表 initlist l 求表長 listlength l 取結點 getnode l i 查詢 locatenode l x 插入 insertlist l x,i 刪除 delete l i 還學習了順序表 單...
第二章 資料結構 二
知識點 trie樹 並查集,堆的操作 高效地儲存和查詢字串集合的資料結構 const int n 100010 int son n 26 cnt n idx 插入 void insert char str cnt p 以這個點結尾的字元數 查詢 intquery char str return cn...
資料結構導論 第二章
第二章主要說的是線性表,那麼什麼是線性表呢?線性表是一種線性結構,在頭結點無直接前驅有乙個直接後繼,尾節點無直接後繼有乙個直接前驅。1.線性表的順序儲存結構 簡單的說就是把線性表的結點按照它的邏輯結構順序,依次的存放到計算機記憶體中一組連續的儲存單元中。用順序儲存來實現的線性表為順序表。這裡要注意,...