順序儲存線性表的分析
效率分析
下面的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...