14 順序儲存線性表的分析

2021-10-10 15:49:51 字數 1499 閱讀 4883

順序儲存線性表的分析

效率分析

下面的o(n)是最壞情況下的

問題 長度相同的兩個seqlist,插入和刪除操作的平均耗時是否相同?

順序儲存結構的線性表裡面儲存的型別要是很大,這個時候插入操作非常耗時,要複製拷貝

練習1下面的**正確嗎?為什麼?

賦值操作使得s2和s1裡面的元素指向同一堆空間

同乙個堆空間釋放兩次,行為未定義的,bug什麼時候表現出來,我們是未知的。

練習2

下面的**正確嗎?為什麼?

插入時,d2的插入會影響d1的插入,把值覆蓋了,呼叫結束後d1和d2都會被析構,堆空間又被釋放兩次

問題解決:

容器型別的類可以考慮禁止禁止拷貝和賦值構造

template < typename t >

class list : public object

virtual bool insert(int i, const t& e) = 0;

virtual bool remove(int i) = 0;

virtual bool set(int i, const t& e) = 0;

virtual bool get(int i, t& e) const = 0;

virtual int length() const = 0;

virtual void clear() = 0;

};

改進insert在末尾插

bool insert(const t& e)

練習3

list[i]首先會檢查i這個位置存不存在,不存在就越界了

問題分析

順序儲存結構線性表提供了陣列操作符過載,通過過載能夠快捷方便的獲取目標位置處的資料元素,在具體的使用形式上類似陣列,但是由於本質不同,不能替代陣列使用。

小結

順序儲存線性表的分析

問題 長度相同的兩個seqlist,插入和刪除操作的平均耗時是否相同?下面的 正確嗎?為什麼?2.導致上面出現問題的原因就是,拷貝建構函式和賦值操作,因此我們可以這樣解決 對於容器型別的類,可以考慮禁用拷貝構造和賦值操作。templateclass list public object 下面的 正確...

線性表的順序儲存 順序儲存的分析

1,對效能和功能兩個方面的分析 2,效率分析 1,o 表示法 2,最耗時的操作是插入和刪除操作,因為要移位 3,長度相同的兩個 seqlist,插入和刪除操作的平均耗時是否相同?1,可能不相同,因為線性表儲存的資料型別可能不同,比如字串插入比整型插入耗時的多 4,分析 或演算法的效率,不能單純的只看...

線性表的順序儲存 線性表的順序儲存結構

1,本文實現乙個線性表 2,順序儲存定義 1,線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表中的資料元素 2,在 c 中可以用乙個陣列作為介質來儲存資料元素 3,設計思路 1,可以用一維陣列實現順序儲存結構 1,儲存空間 t m array 2,當前長度 int m length...