1,線性表兩種實現:
1,順序表;
2,單鏈表;
2,問題:
1,遍歷線性表;
2,封裝這個遍歷操作;
3,遺失的操作 - find:
1,可以為線性表(list)增加乙個查詢操作;
2,int find(const t& e) const;
1,引數:
1,待查詢的資料元素;
2,返回值:
2,-1:資料元素不存在;
3,遍歷中會有相等和不等操作符,當比較物件是類的時候,需要類繼承自 object,並重寫相等和不等操作符;
4,資料元素查詢示例:
5,find 查詢操作實現:
1,見第「線性表的鏈式儲存——單鏈表的實現」中4的實現;
6,建議:
1,如果需要將 dtlib 用於工程中,最好在類的定義時候繼承自 object,這樣可以避免編譯的錯誤;
7,時間複雜度對比分析:
8,順序表的整體時間複雜度比單鏈表要低,單鏈表還有使用的價值嗎?
1,效率的深度分析:
1,對於內建基礎型別,順序表和單鏈表的效率不相上下(順序表稍微高一點點);
2,對於自定義類型別,順序表在效率上低於單鏈表;
2,插入和刪除:
1,順序表:涉及大量資料物件的複製操作;
1,基礎資料型別不相上下;
2,自定義類型別(非常複雜、深拷貝),順序表非常低效;
2,單鏈表:只涉及指標操作,效率與資料物件無關;
3,資料訪問:
1,順序表:隨機訪問,可直接定位資料物件;
1,原生陣列,可以直接定位;
2,單鏈表:順序訪問,必須從頭訪問資料物件,無法直接定位;
2,工程開發中的選擇:
1,順序表(型別簡單、訪問多):
1,資料元素的型別相對簡單,不涉及深拷貝;
2,資料元素相對穩定,訪問操作遠多於插入和刪除操作;
2,單鏈表(型別複雜,插刪多):
1,資料元素的型別相對複雜,複製操作相對耗時;
2,資料元素不穩定,需要經常插入和刪除,訪問操作較少;
9,小結:
1,線性表中元素的查詢依賴於相等比較操作符(==);
2,順序表適用於訪問需求量較大的場合(隨機訪問);
3,單鏈表適用於資料元素頻繁插入刪除的場合(順序訪問);
4,當資料型別相對簡單時,順序表和單鏈表的效率不相上下;
線性表順序儲存和鏈式儲存
輸入第1行是乙個整數n,表示之後還有n行輸入。每行輸入表示對線性表的一條操作指令,格式是 指令編號 引數1 引數2 如有 指令編號為3,表示find操作,此時只有乙個引數,即待查元素的值。順序儲存 include using namespace std const int maxn 1e4 1 st...
線性表的鏈式儲存結構 單鏈表
線性表中每個節點有唯一的前趨節點和後繼節點 每個 物理節點增加乙個指向後繼節點的指標域 單鏈表 每個物理節點增加乙個指向後繼節點和前趨節點的指標域 雙鏈表 單鏈表的特點 當訪問乙個節點後,只能接著它的後繼節點,而無法訪問它的前趨節點。1.單鏈表插入節點 操作 將值為x的新節點 s插入到 p節點之後 ...
線性表的順序儲存和鏈式儲存
線性表的順序儲存是指用一組位址連續的儲存單元依次儲存線性表中的資料元素,從而使得邏輯上相鄰的兩個元素在物理位置上也相鄰。採用順序儲存的有點是可以隨機訪問表中的元素,缺點是插入和刪除操作需要移動元素。在插入之前要移動元素以挪出空的儲存單元,然後再插入元素 刪除操作同樣需要移動元素,以填充被刪除的元素空...