鍊錶實現
鍊錶和陣列一樣也是一種線性資料結構。
鍊錶一般以鏈式儲存結構實現,適合需要頻繁增刪資料的需求,但是不支援隨機訪問。
鍊錶一般包括單鏈表和雙鏈表以及迴圈鍊錶,單鏈表和雙鏈表以及迴圈鍊錶的實現一般使用虛擬頭結點的形式可以簡化實現細節。
在c++ stl標準庫中,標頭檔案實現的為雙鏈表,標頭檔案實現的為單鏈表形式。
單鏈表的節點包含資料值和指向下乙個節點的next指標,最後乙個節點的next指標指向nullptr指標。
雙鏈表的節點包含資料值和指向下乙個節點的next指標以及指向前乙個節點的prev指標。
單鏈表和雙鏈表均使用含有虛擬頭結點的形式。
#ifndef mylist_h
#define mylist_h
#include
using namespace std;
template
>
class
mylist
mylist
(t data)
//判斷鍊錶是否為空
bool empty()
//判斷鍊錶儲存資料容量
int size()
//在鍊錶指定位置處新增新節點
void
add(int index,
t data)
node* newnode =
newnode
(data)
; newnode-
>next = prev-
>next;
prev-
>next = newnode;
count++;}
//在鍊錶執行位置處刪除節點
void
remove
(int index)
//判斷鍊錶中是否包含指定資料
bool contain
(t data)
return
false;}
//獲取指定位置處的資料
tget
(int index)
return getnode-
>data;
}//析構函式
~mylist()
}private
://鍊錶節點的定義
struct node
node
(t data)
:data
(data)
,next
(nullptr)
node()
:data
(null),
next
(nullptr)
t data;
node* next;};
int count =0;
node* dummynode;};
#endif
#ifndef dblinkedlist_h
#define dblinkedlist_h
#include
using namespace std;
template
>
class
dblinkedlist
dblinkedlist
(t data)
//判斷鍊錶是否為空
bool empty()
//判斷鍊錶大小
int size()
//在鍊錶中增加節點
void
add(int index,
t data)
node* newnode =
newnode
(data);if
(index == count)
pre-
>next-
>prev = newnode;
newnode-
>next = pre-
>next;
newnode-
>prev = pre;
pre-
>next = newnode;
count++;}
//在鍊錶中刪除節點
void
remove
(int index)
tmp-
>next-
>prev = pre;
pre-
>next = pre-
>next-
>next;
tmp-
>next = nullptr;
tmp-
>prev = nullptr;
delete tmp;
count--;}
//判斷鍊錶中是否包含指定資料
bool contain
(t data)
return
false;}
//獲取鍊錶指定位置處的資料
tget
(int index)
return getnode-
>data;
}//析構函式
~dblinkedlist()
}private
://雙向鍊錶節點
struct node
node
(t data)
:data
(data)
,next
(nullptr)
,prev
(nullptr)
node()
:data
(null),
next
(nullptr)
,prev
(nullptr)
t data;
node* next;
node* prev;};
int count =0;
node* dummynode;};
#endif
鍊錶及其實現
鍊錶相對於順序表,具有更好的動態性。下面主要討論最簡單的一種鍊錶 單鏈表。在單鏈表中,表的每乙個物件除了含有關鍵字element外,還有乙個指標next。物件中還可以含有其他的輔助資料,稱作衛星資料。當我們要移動關鍵字時,衛星資料也必須要移動。如果物件中含有大量衛星資料,則通常移動指標而不是物件本身...
十字鍊錶及其C 實現
最近有個同學在用十字鍊錶做畢設,然後我手癢了就拿過來把他畢設拿過來 翻掉重寫。一方面以前也沒怎麼寫過十字鍊錶,另一方面好久不寫資料結構了隨便找個來練練手。至於他畢設的其他內容嘛應他本人要求結題前就不發了。圖大概一共有4中儲存方式 鄰接矩陣,鄰接表,邊集陣列,十字鍊錶。其實前三種資料結構都十分得好理解...
C 鍊錶及其建立
鍊錶是由一系列連線在一起的結點構成,其中的每個結點都是乙個資料結構。鍊錶的結點通常是動態分配 使用和刪除的,允許鍊錶在程式執行時增大或縮小。如果需要將新資訊新增到鍊錶中,則程式只需分配另乙個結點並將其插入到系列中。如果需要從鍊錶中刪除特定的資訊塊,則程式將刪除包含該資訊的結點。儘管鍊錶的編碼和管理比...