今天是線性表:
用一組位址連續的儲存單元依次存放線性表中的資料元素順序映像的c語言描述線性表的初始化操作線性表元素定位操作該演算法的時間複雜度o(listlength(l))//在0-表長之間變化
線性表元素插入
listinsert(&l, i, e)的實現
問: 插入元素後, 線性表的邏輯關係發生了什麼變化
線性表的結構發生變化, 長度發生變化時間複雜度: o(listlength(l))//最壞的情況和表長一樣, 最好的情況是o
考慮平均的情況:
假設在第i個元素之前插入的概率為pi, 則在長度為n的線性表中插入乙個元素所需移動元素次數的期望值為: (乙個公式)
線性表刪除操作
listdelete(&l, i, &e)的實現:
問: 刪除元素時, 線性表的邏輯結構發生了什麼變化此演算法的時間複雜度: o(listlength(l))//和表長成正比
考慮平均的情況:
假設刪除第i個元素的概率為qi, 則在長度為n的線性表中刪除乙個元素所需移動元素次數的期望值為: (乙個公式)
2.3 線性表型別的實現 - 鏈式映像
1. 單鏈表
用一組位址任意的儲存單元存放線性表中的資料元素
以元素(資料元素的映像) + 指標(指示後繼元素儲存位置的) = 結點(表示資料元素)
以"結點的序列"表示線性表 - 稱為鍊錶
通常用線性表中第乙個資料元素的儲存位址作為線性表的位址, 稱作線性表的頭指標
2. 結點和單鏈表的c語言描述
3. 單鏈表操作的實現
線性表的操作getelem(l, i, &e)在鍊錶中的實現:
基本操作為 使指標p始終指向線性表中的第j個資料元素時間複雜度: o(listlength(l)) // o表長
線性表的操作listinsert_l(&l, i, e)在鍊錶中的實現:
基本操作為: 找到線性表中第i-1個結點, 修改其指向後繼的指標時間複雜度: o(listlength(l))
線性表的操作listdelete_l(&l, i, &e)在鍊錶中的實現:
基本操作為: 找到線性表中第i-1個結點, 修改其指向後繼的指標時間複雜度: o(listlength(l))
這堂課主要講述了線性表的兩種實現形式
大家一看就知道...陣列和鍊錶,
具體看筆記把, 沒啥好說的
最近比較忙.
資料結構 嚴蔚敏
最近一直想找一本純資料結構的書來學習,找來找去都沒有找到一本合適的書籍,相比之下國內的書籍之中,嚴蔚敏和吳偉民的還算是經典版了,很多國內其他資料結構教材都參考這本書的。但缺點是很多都是偽 對程式設計初學者來說有一些難度,甚至有些考研的同學來看這本書有很多還看不懂,並且裡面也有些容易迷惑人的地方。出於...
資料結構(嚴蔚敏)
說起為什麼重新拿起這本書,著實非常慚愧。是因為面試的時候,第乙個面試官面試完專案之後。第二面試官說我們就當聊聊天,考考資料結構,演算法就好了。結果以乙個問題就把我難住了,這個問題是 雜湊表是什麼?所以我打算花兩天的時間重新把這本書看一遍,並做下筆記,這次我一定會記住。目前,計算機已深入到社會生活的各...
《資料結構題集》嚴蔚敏 2 11
有效 int insertlistorder list l,int e int insertlistorder list l,int e for i l length i 1 i 雖然是用指標來代替靜態陣列,但還是可以用陣列這個形式滴 l elem i e l length return ok 全部...