【資料結構】回顧表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
相關文章
- 【資料結構】回顧棧ADT和隊ADT資料結構
- 【資料結構】回顧表、棧、佇列資料結構佇列
- 【資料結構】回顧二叉樹資料結構二叉樹
- 【資料結構】回顧優先佇列(堆)資料結構佇列
- 經典資料結構和演算法回顧資料結構演算法
- 資料結構與演算法分析筆記(c++)_抽象資料型別(ADT)、表ADT、STL中的向量和表資料結構演算法筆記C++抽象資料型別
- 雜湊表 ADT 分離連結法【資料結構與演算法分析 c 語言描述】資料結構演算法
- 棧 ADT 【資料結構與演算法分析 c 語言描述】資料結構演算法
- Mysql匯出表結構、表資料MySql
- 資料結構——雜湊表資料結構
- [資料結構] - 線性表資料結構
- 資料結構 | 線性表資料結構
- 資料結構——線性表資料結構
- 資料結構-線性表資料結構
- 資料結構—線性表資料結構
- Activiti資料庫表結構資料庫
- QC資料庫表結構資料庫
- 一次面試回顧——探討表現與資料分離面試
- 佇列 ADT 【資料結構與演算法分析 c 語言描述】佇列資料結構演算法
- WordPress10週年資料回顧
- 資料結構 - 線性表 - 順序表資料結構
- 資料結構進階:ST表資料結構
- 資料結構之「雜湊表」資料結構
- 資料結構(一)--- 跳躍表資料結構
- Redis資料結構—跳躍表Redis資料結構
- jdbcTemplate 獲取資料表結構JDBC
- 回顧Javascript建構函式JavaScript函式
- 【資料結構之線性表總結】資料結構
- rhel5 mysqldump使用_匯出表結構_資料_結構及資料MySql
- DB2匯出表結構、表資料小結DB2
- 創業生活總結回顧創業
- [課程複習] 資料結構之經典題目回顧 (一)選擇題、填空題1資料結構
- 2021年資料庫回顧 - OtterTune資料庫
- 資料庫起不來了-事件回顧資料庫事件
- 考研資料結構-線性表-順序表資料結構
- 【資料結構】線性表-單連結串列資料結構
- JAVA資料結構之雜湊表Java資料結構
- 資料結構基礎--雜湊表資料結構