底層是由節點(靜態內部類)來進行儲存元素的,底層記憶體不連續,不需要擴容增刪元素效率較高,查詢元素效率較低 執行緒不安全
linkedlist類中有乙個內部私有類node,這個類就代表雙端鍊錶的節點node。這個類有三個屬性,分別是前驅節點,本節點的值,後繼結點。
原始碼中的實現是這樣的。
private注意這個節點的初始化方法,給定三個引數,分別前驅節點,本節點的值,後繼結點。這個方法將在linkedlist的實現中多次呼叫。static
class node
}
下圖是linkedlist內部結構的視覺化,能夠幫我們更好的理解linkedlist內部的結構。
//新增
39public
void
add(string str)
4051
else
//尾部節點
5260
61 size++;62}
63//
插入64
public
void insert(int
index,string str)
6571
7273
//判斷插入節點的位置
74//
插入的節點位置是頭節點且size為0
75//
在尾部進行新增節點
76if(index==size)
81//
新節點82 node node=new node(str, null, null
);83
//判斷插入頭節點但是已經有了頭節點
84//
size 不為0
85if(index==0)
8694
else
101//
最後會找到第index的節點no
102//
插入在no之前
103 no.prev.next=node; //
no前面的節點的next指向新節點
104 node.prev=no; //
新節點的next指向no
105 no.prev=node; //
no的prev指向新節點
106 node.next=no; //
新節點的next指向no
107}
108 size++;
109}
110//
下標越界問題
111public
void out(int
index)
112118
119}
120//
根據下標找到節點
121public node getnode(int
index)
122128
return
n;129
}130
//刪除----根據下標
131public
void remove(int
index)
132143
else
if(index==size-1)
149else
157 size--;
158}
159//
根據指定元素進行刪除
160public
void
remove(string str)
161167
}168
//找到元素第一次出現的座標
169public
intindexof(string str)
180 no=no.next;
181}
182return -1;
183184
}185
@override
186public
string tostring()
196 string s=sb.tostring();
197if(size>0)
198201
return s+"]";
202}
203 }
view code
參考:
LinkList鍊錶操作
以下的c 類linklist實現了線性鍊錶的一般操作。可以直接在其他的程式中直接建立它的物件,其中線性表中的資料在此為整型,具體應用的時候可以適當的修改,並可以在此基礎上繼續封裝特定的功能。標頭檔案 linklist.h typedef struct lnode lnode,plinklist cl...
鍊錶(LinkList) 單鏈表
一 鍊錶的基本概念 鍊錶是一種物理上不連續 非順序的儲存結構,資料元素之間通過指標關聯在一起。鍊錶的特點 1 空間開銷大 物理空間不連續 2 可以動態新增新的節點 3 查詢元素只能按順序查詢 二 單向鍊錶圖示 節點 class node 鍊錶 class linklist linklist void...
用Python實現鍊錶Linklist
在leetcode上面試著用python解題,但是遇到鍊錶 二叉樹什麼的,python就用不溜。在網上看了一些資料。完整的實現過程如下 class node next none data none def init self,nodedata self.data nodedata 乙個鍊錶資料結構,...