vector**:
1.vector資料結構
vector和陣列類似,擁有一段連續的記憶體空間,並且起始位址不變。
因此能高效的進行隨機訪問,時間複雜度為o(1);
但因為記憶體空間是連續的,所以在進行插入和刪除操作時,會造成記憶體塊的拷貝,時間複雜度為o(n)。
另外,當陣列中記憶體空間不夠時,會重新申請一塊記憶體空間並進行記憶體拷貝。
2.list資料結構
list是由雙向鍊錶實現的,因此記憶體空間是不連續的。
只能通過指標訪問資料,所以list的隨機訪問非常沒有效率,時間複雜度為o(n);
但由於鍊錶的特點,能高效地進行插入和刪除。
標頭檔案:
#ifndef __list_h__
#define __list_h__
#includeusing namespace std;
typedef int datatype;
struct listnode
};class list
;#endif
list.h
#include"list.h"
list::list()
:_head(new node(datatype()))
list::list(const list& l)
_head = new node(datatype());
_head->_next = _head;
_head->_prev = _head;
node* cur = l._head->_next;
while(cur != l._head) }
list& list::operator=(const list& l)
return *this;
}list::~list()
node* del = _head;
_head->_prev->_next = null;
node* tmp = del;
while(del != null) }
void list::pushback(datatype x)
node* newnode = new node(x);
node* tail = _head->_prev;//標記尾節點
newnode->_prev = tail;
newnode->_next = _head;
_head->_prev = newnode;
tail->_next = newnode;
}void list::popback()
node* del = _head->_prev;
_head->_prev = del->_prev;
del->_prev->_next = _head;
delete del;
}void list::pushfront(datatype x)
void list::popfront()
node* del = _head->_next;
_head->_next = del->_next;
del->_next->_prev = _head;
delete del;
}void list::insert(node* pos ,datatype x)
if(pos == _head->_prev)
else }
void list::erase(node* pos)
else if(pos == _head->_next)
else if(pos == _head->_prev)
else }
list::node* list::find(datatype x)
node* cur = _head->_next;
while(cur != _head)
cur = cur->_next;
} return null;
}void list::swap(list& l)
void list::show()
cout<
C 實現雙向迴圈鍊錶(帶頭結點)
雙向鍊錶也叫雙鏈表,是鍊錶的一種,它的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅。所以,從雙向鍊錶中的任意乙個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。一般我們都構造雙向迴圈鍊錶。簡單的畫乙個雙向迴圈簡易圖 下面就用c 實現一下基本操作 當然也有 c 語言 版的,只是單鏈表操作...
實現帶頭結點的雙向迴圈鍊錶
dlist.h 帶頭節點的雙向迴圈鍊錶 為什麼要帶頭 原因是因為如果不帶頭的話,那麼頭插或者頭刪會比較麻煩 而且不帶頭的話需要傳遞二級指標,帶頭的話,只需要傳遞一級指標 為什麼給成雙向的?有乙個理由是可以逆向列印鍊錶 也就是對有些操作會簡單一些 pragma once 保證標頭檔案不會被重複包含 i...
帶頭結點帶環的雙向鍊錶的實現
在寫這個 的實現之前我們先來了解下相關的知識。首先,帶頭結點帶環的雙向鍊錶的特點 帶頭節點 建立乙個結點表示空鍊錶,這個節點就是頭結點,並且頭結點中的資料不具有實際的意義。但是我們一般不關心頭結點中的元素,只起 帶頭 作用。雙向要求每個結點中都有乙個next指標指向下乙個,乙個prev指標指向下乙個...