雙端鍊錶:
一、什麼是雙端鍊錶。
鍊錶中儲存著對最後乙個鏈節點引用的鍊錶。
二、從頭部進行插入
要對鍊錶進行判斷,如果為空則設定尾節點為新新增的節點。
三、從尾部進行插入
如果鍊錶為空,則直接設定頭結點為新新增的節點,否則設定尾節點的後乙個節點為新新增節點。
四、從頭部進行刪除
判斷頭結點是否為下乙個結點,如果沒有則設定為結點為null。
雙端鍊錶的好處就是可以從尾結點進行新增
public
class
node
public
node
(long data)
public
void
display()
}
基本方法:
public
class
firstlastlinklist
/** * 插入乙個結點,在頭結點後進行插入
*/public
void
insertfirst
(long value)
node.next = first;
first = node;
}/**
* 插入乙個結點,從尾結點進行插入
*/public
void
insertlast
(long value)
else
last = node;
}/**
* 刪除乙個結點,在頭結點後進行刪除
*/public node deletefirst()
first = tmp.next;
return tmp;
}/**
* 顯示方法
*/public
void
display()
system.out.
println()
;}/** * 查詢方法
*/public node find
(long value)
current = current.next;
}return current;
}/**
* 刪除方法,根據資料域來進行刪除
*/public node delete
(long value)
previous = current;
current = current.next;}if
(current == first)
else
return current;
}/**
* 判斷是否為空
*/public
boolean
isempty()
}
雙向鍊錶
一、什麼是雙向量表。
每個結點除了儲存了對下乙個結點的引用,同時還儲存著對前乙個結點的引用。
二、從頭部進行插入
要對鍊錶進行判斷,如果為空則設定尾結點為新新增的節點。如果不為空,還需要設定頭結點的前乙個結點為新新增的結點。
三、從尾部進行插入
如果鍊錶為空,則直接設定頭結點為新新增的結點,否則設定尾結點的後乙個結點為新新增節點。同時設定新新增的結點的前乙個節點為尾結點。
四、從頭部進行刪除
判斷頭結點是否有下乙個結點,如果沒有則設定為結點為null。否則設定頭結點的下乙個結點為previous為null。
五、從尾部進行刪除
如果頭結點後沒有其他節點,則設定尾節點為null。否則設定尾節點前乙個結點的next為null。設定尾結點為其前乙個節點。
六、刪除方法。
不需要再使用乙個臨時的指標域。
package study.datastructure.firstnodelast;
/* * 雙向鍊錶
*/public
class
doublelinklist
/** * 插入乙個結點,在頭結點後進行插入
*/public
void
insertfirst
(long value)
else
node.next = first;
first = node;
}/**
* 插入乙個結點,從尾結點進行插入
*/public
void
insertlast
(long value)
else
last = node;
}/**
* 刪除乙個結點,在頭結點後進行刪除
*/public node deletefirst()
else
first = tmp.next;
return tmp;
}/**
* 刪除結點,從尾部進行刪除
*/public node deletelast()
else
last = last.previous;
return last;
}/**
* 顯示方法
*/public
void
display()
system.out.
println()
;}/** * 查詢方法
*/public node find
(long value)
current = current.next;
}return current;
}/**
* 刪除方法,根據資料域來進行刪除
*/public node delete
(long value)
current = current.next;}if
(current == first)
else
return current;
}/**
* 判斷是否為空
*/public
boolean
isempty()
}
資料結構和演算法 5 2 雙端鍊錶 雙向鍊錶
單鏈表要想在表尾插入乙個鏈結點,需要遍歷整個鍊錶直到表尾,再進行插入,效率很低 雙端鍊錶增加了對錶尾鏈結點的引用,可以直接在表尾插入鏈結點 下面是雙端鍊錶的實現 雙端鍊錶的使用 之前有介紹用陣列實現佇列,下面提供乙個用雙端鍊錶實現的佇列,其中queue是佇列的基類,若有疑惑,可以先看一下前面講佇列的...
雙端鍊錶 雙向鍊錶(java)
1 雙端鍊錶 2 測試雙端鍊錶 3 雙向鍊錶 4 測試雙向鍊錶 1 雙端鍊錶 package com.cwq.ch05 import com.cwq.ch04.node 雙端鍊錶,將資料串起來 author carpoor date 2019年1月29日 public class myfirstla...
資料結構 鍊錶 雙向鍊錶
注意typedef的定義結構,以及dinklist的資料型別 typedef struct dnode dnode,dinklist 注意插入第乙個結點時,prior指標的空指向問題 if l next null 若l後繼結點為空 則省略該步驟 l next prior p 基本 頭插法建立雙向鍊錶...