資料結構 二 單向鍊錶 雙向鍊錶

2021-10-09 03:22:23 字數 4159 閱讀 4743

《資料結構 (一) ----- 資料結構基本概念&基於陣列實現線性表》

《資料結構 (二) ----- 單向鍊錶&雙向鍊錶》

雙鏈表

一、基本概念

單鏈表由乙個個節點組成

public

class

mysinglelistnode

}

二、介面

public

inte***ce

mylist

三、功能實現
public

class

mysinglelinkedlist

implements

mylist

else

size++;}

@override

public

boolean

delete

(object element)

else

size--

;return

true;}

temp1 = temp2;

temp2 = temp2.next;

}return

false;}

@override

public

boolean

delete

(int index)

else

size--

;return

true;}

temp1 = temp2;

temp2 = temp2.next;

i++;}

return

false;}

@override

public

boolean

update

(int index, object newelement)

else

return

true;}

temp = temp.next;

i++;}

return

false;}

@override

public

boolean

contains

(object target)

temp = temp.next;

}return

false;}

@override

public object get

(int index)

temp = temp.next;

i++;}

throw

newindexoutofbound***ception

("index: "

+ index +

", "

+"size: "

+ size);}

@override

public

intsize()

@override

public

intindexof

(object element)

temp = temp.next;

i++;}

return-1

;}@override

public string tostring()

sb.("]");

return sb.

tostring();}}

四、幾個關鍵的地方

void add(object element)功能實現

public

void

add(object element)

else

size++

;}

boolean delete(int index)功能實現

public

boolean

delete

(int index)

else

size--

;return

true;}

temp1 = temp2;

temp2 = temp2.next;

i++;}

return

false

;}

說明:

建立乙個變數i手動來記錄temp2在鍊錶中的位置

temp1始終在temp2的前面一位

注意要單獨討論index=0 —> 被刪除節點是頭節點的情況

一、基本概念

public

inte***ce

mylist

三、功能實現
public

class

mydoublelinkedlist

implements

mylist

@override

public

void

add(object element)

@override

public

boolean

delete

(object element)

temp = temp.next;

}return

false;}

@override

public

boolean

delete

(int index)

temp = temp.next;

index++;}

return

false;}

@override

public

boolean

update

(int index, object newelement)

temp = temp.next;

i++;}

return

false;}

@override

public

boolean

contains

(object target)

@override

public object get

(int index)

temp = temp.next;

i++;}

throw

newindexoutofbound***ception

("index: "

+ index +

", "

+"size: "

+ size);}

@override

public

intsize()

@override

public

intindexof

(object element)

temp = temp.next;

i++;}

return-1

;}@override

public string tostring()

builder.

("]");

return builder.

tostring();}}

四、幾個關鍵的地方

temp節點掃瞄鍊錶的時候,把頭尾兩個啞元當作頭尾標誌,只用掃瞄它們中間的節點

void add(object newelement)功能實現

public

void

add(object element)

說明:新節點左邊的前後指標更新完後再去更新右邊的前後指標

boolean delete(object element)功能實現

public

boolean

delete

(object element)

temp = temp.next;

}return

false

;}

資料結構 反轉單向鍊錶和雙向鍊錶

程式設計師 面試指南 左程雲 讀書筆記 第三章反轉單向鍊錶和雙向鍊錶 單向鍊錶 public class node public class returnlist public static node relist node head 逆序後的第乙個節點 node pre null node nex...

資料結構 單向與雙向鍊錶

結點中有乙個元素以及指向下乙個結點的指標 public class node 對鍊錶進行增刪改查 public class link public void delete e e else system.out.println 成功刪除 e else public void replace e e1...

資料結構 鍊錶 雙向鍊錶

注意typedef的定義結構,以及dinklist的資料型別 typedef struct dnode dnode,dinklist 注意插入第乙個結點時,prior指標的空指向問題 if l next null 若l後繼結點為空 則省略該步驟 l next prior p 基本 頭插法建立雙向鍊錶...