寫在開頭
節點 node
鍊錶資料結構建立 linkedlist,為保證節點資訊安全性,採用內部類方式進行構造
/**
* @author by jiangyf
* @classname linkedlist
* @description 鍊錶
* @date 2019/9/28 13:08
*/public
class
linkedlist
public
node
(e e)
public
node()
@override
public string tostring()
';}}
private node head;
int size;
public
linkedlist()
// 獲取鍊錶容量
public
intgetsize()
// 判斷鍊錶是否為空
public
boolean
isempty()
}
新增操作方法
獲取指定位置index
的節點元素
public e get
(int index)
throws illegalacces***ception
// 定位到head節點
node cur = dummyhead.next;
for(
int i =
0; i < index; i++
) cur = cur.next;
return cur.e;
}
獲取頭結點、尾結點
public e getfirst()
throws illegalacces***ception
public e getlast()
throws illegalacces***ception
更新指定位置元素
public
void
set(
int index, e e)
throws illegalacces***ception
node cur = dummyhead.next;
for(
int i =
0; i < index ; i++
) cur = cur.next;
cur.e = e;
}
查詢鍊錶中是否存在元素
public
boolean
contains
(e e)
cur = cur.next;
}return
false
;}
刪除鍊錶元素節點
public e remove
(int index)
throws illegalacces***ception
// 定位到待刪除節點的前一節點
node prev = dummyhead;
for(
int i =
0; i < index -
1; i++
) prev = prev.next;
// 儲存待刪除節點
node retnode = prev.next;
// 跨過待刪除節點進行連線
prev.next = retnode.next;
// 待刪除節點next置空
retnode.next = null;
size --
;return retnode.e;
}public e removefirst()
throws illegalacces***ception
public e removelast()
throws illegalacces***ception
通過上述方法,我們可以分析得出:鍊錶的curd操作的平均時間複雜度均為o(n),鍊錶的操作均要進行遍歷。
仔細想想,如果對鍊錶的操作僅限於頭部
呢? 細思極恐,是不是複雜度就降為o(1)啦?又由於鍊錶是動態的,不會造成空間的浪費,所以當且僅當頭部
操作下,優勢是很明顯的!
資料結構 鍊錶4 企業鍊錶
linklist.h ifndef linklist h define linklist h include include 鍊錶結點 typedef struct linknode linknode 鍊錶 typedef struct linklistlinklist 比較函式指標 typedef...
資料結構鍊錶之迴圈鍊錶 4
迴圈鍊錶定義 迴圈鍊錶的構建 class node def init self,item self.item item self.next none first node aa second node bb third node cc forth node dd fifth node ee firs...
資料結構基礎(4)順序表 鍊錶 棧
順序表雖然是一種很有用的儲存結構,但是也具有以下侷限性 1.若要為順序表擴充儲存空間,則需要重新建立乙個位址連續的更大的儲存空間,並把原有的資料元素都複製到新的儲存空間中。2.因為順序儲存要求邏輯上相鄰的資料元素,在物理儲存位置上也相鄰,這就意味著增加刪除元素會引起平均約一半的資料元素移動。所以順序...