【資料結構】回顧表ADT
1.對於表的所有操作來說,都可以使用陣列來實現,而且陣列雖然是靜態分配的,但內部儲存陣列的vector類卻允許在需要時將陣列的大小增加一倍。
2.正是因為陣列的實現,使得printList以線性時間來執行,而findkth甚至是通過常數時間。最不濟的是插入和刪除了,如果位置不好,比如說在0號位置插入就需要將整個陣列的所有元素都向後移,為O(N)。正是為了避免插入和刪除的線性開銷,我們就開始使用一種叫做連結串列(Linked List)的技術。
3.連結串列由許多在記憶體中相連的結點(Node)組成,而每一個結點都有表元素和該元素後續元的結點的鏈(link)。這個叫做next鏈,自然而然地,最後一個單元的next鏈指向NULL。
4.STL的全稱是“Standard Template Library”,中文名叫做“標準模板庫”。表ADT就在其中。
5.陣列就是一塊指向記憶體的指標變數,記憶體塊可以通過new[]來分配,同時也必須用delete[]來釋放,記憶體塊的大小不能改變。
6.將一個包含x的新結點通過p和p.prev指向的結點結合,指標的賦值可以按下面的方式來寫。
Node *newNode=new Node(x,p->prev,p);
p->prev->next=newNode;
p->prev=neweNode;
但它還可以得到合併:
Node *newNode=new Node(x,p->prev,p);
p->prev=p->prev->next=newNode;
然後它還可以進一步合併:
p->prev=p->prev->next=new Node(x,p->prev,p);
因此可以這樣來寫insert操作:
iterator insert(iterator itr,const Object & x)
{
Node *p=itr.current;
theSize++;
return iterator(p->prev=p->prev->next=new Node(x,p->prev,p));
}
7.同樣的,對於雙向列表的delete操作來說,會是這樣:
p->prev->next=p->next;
p->next->prev=p->prev;
delete p;
修改之後的insert函式。
iterator insert(iterator itr,const Object & x)
{
itr.assertIsValid();
if(itr.theList!=this)
throw IteratorMismatchException();
Node *p=itr.current;
theSize++;
return iterator(* this,p->prev=p-prev->next=new Node(x,p->prev,p));
}
歡迎大家點選左上角的“關注”或右上角的“收藏”方便以後閱讀。
為使本文得到斧正和提問,轉載請註明出處:
http://blog.csdn.net/nomasp
相關文章
- Lab2 - ADT&OOP 回顧總結OOP
- 資料結構與演算法分析筆記(c++)_抽象資料型別(ADT)、表ADT、STL中的向量和表資料結構演算法筆記C++抽象資料型別
- 雜湊表 ADT 分離連結法【資料結構與演算法分析 c 語言描述】資料結構演算法
- 棧 ADT 【資料結構與演算法分析 c 語言描述】資料結構演算法
- 佇列 ADT 【資料結構與演算法分析 c 語言描述】佇列資料結構演算法
- [資料結構] - 線性表資料結構
- 資料結構——線性表資料結構
- 資料結構——雜湊表資料結構
- 資料結構 | 線性表資料結構
- 資料結構-線性表資料結構
- 資料結構—線性表資料結構
- 2021年資料庫回顧 - OtterTune資料庫
- 抽象資料型別(ADT)抽象資料型別
- 資料結構 - 線性表 - 順序表資料結構
- 雜湊表 ADT 開放地址法解決衝突【資料結構與演算法分析 c 語言描述】資料結構演算法
- 資料結構 - 雜湊表,初探資料結構
- Redis資料結構—跳躍表Redis資料結構
- 資料結構(一)--- 跳躍表資料結構
- 資料結構進階:ST表資料結構
- 資料結構之「雜湊表」資料結構
- 資料結構-線性表、連結串列資料結構
- 資料庫-單表結構-建表語句資料庫
- 考研資料結構-線性表-順序表資料結構
- [課程複習] 資料結構之經典題目回顧 (一)選擇題、填空題1資料結構
- 【資料結構】線性表-單連結串列資料結構
- 回顧Javascript建構函式JavaScript函式
- 資料結構 - 雜湊表,再探資料結構
- 資料結構:線性表-例題資料結構
- 資料結構——RMQ(ST表)問題資料結構MQ
- Agile PLM資料庫表結構(Oracle)資料庫Oracle
- 線性表__資料結構筆記資料結構筆記
- 資料結構——單鍵表操作集資料結構
- 資料結構基礎--雜湊表資料結構
- JAVA資料結構之雜湊表Java資料結構
- mysql複製表結構和資料MySql
- 資料結構與演算法分析(c 語言描述)多項式 ADT 單連結串列實現資料結構演算法
- 一圖回顧博睿資料的2022
- 連結串列的ADT
- 資料結構與演算法分析(c 語言描述)多項式 ADT 陣列實現資料結構演算法陣列