// 使用者傳來只傳來e
public
node
(e e)
// 使用者沒有傳任何引數
public
node()
@override
public string tostring()
}//虛擬頭結點
private node dummyhead;
//記錄鍊錶中有多少個元素
private
int size;
//對於乙個空的鍊錶來說 他是存在乙個空的節點的,這個節點就是唯一的虛擬頭結點
public
linkedlist()
//獲取當前鍊錶中元素的個數
public
intgetsize()
//返回鍊錶是否為空
public
boolean
isempty()
//在鍊錶的index(0-based)位置新增新的元素e
public
void
add(
int index, e e)
node prev = dummyhead;
for(
int i =
0; i < index; i++
)//新插入的node prev.next = new node(e, prev.next); 與下面三句話等價
node node =
newnode
(e);
node.next = prev.next;
prev.next = node;
size++;}
//在鍊錶的頭插入新的元素
public
void
addfirst
(e e)
//在鍊錶的尾插入新的元素
public
void
addlast
(e e)
// 獲得鍊錶的第index(0-based)個位置的元素
// 在鍊錶中不是乙個常用的操作
public e get
(int index)
node cur = dummyhead.next;
for(
int i =
0; i < index; i++
)return cur.e;
}//獲取列表的第乙個元素
public e getfirst()
//獲取列表的最後乙個元素
public e getlast()
// 修改鍊錶的第index(0-based)個位置的元素為e
// 在鍊錶中不是乙個常用的操作
public
void
set(
int index, e e)
node cur = dummyhead.next;
for(
int i =
0; i < index; i++
) cur.e = e;
}// 查詢鍊錶中是否有元素e
public
boolean
contains
(e e)
cur = cur.next;
}return
false;}
//從鍊錶中刪除index(0-based)位置的元素,返回刪除的元素e
public e remove
(int index)
node prev = dummyhead;
for(
int i =
0; i < index; i++
) node retnode = prev.next;
prev.next = retnode.next;
retnode.next= null;
size--
;return retnode.e;
}public e removefirst()
public e removelast()
@override
public string tostring()
// 與上面等價
// for (node cur = dummyhead.next; cur != null; cur = cur.next)
res.
("null");
return res.
tostring()
;}public
static
void
main
(string[
] args)
linkedlist.
add(2,
666)
; system.out.
println
(linkedlist)
; linkedlist.
remove(2
);system.out.
println
(linkedlist)
; linkedlist.
removefirst()
; system.out.
println
(linkedlist)
; linkedlist.
removelast()
; system.out.
println
(linkedlist);}
}
package linkedliststack;
public
class
linkedliststack
implements
stack
@override
public
intgetsize()
@override
public
boolean
isempty()
@override
public
void
push
(e e)
@override
public e pop()
@override
public e peek()
@override
public string tostring()
public
static
void
main
(string[
] args)
stack.
pop();
system.out.
println
(stack);}
}
資料結構 棧 鍊錶實現
鍊錶實現的棧可以克服在程式執行時也無法估計棧容量大小的情況 棧中的元素是儲存在稱為節點的類中,每個節點都包含乙個資料域和乙個指標域 資料域儲存棧的值,指標域指示棧中下乙個值得位置 而棧類的資料成員是需要乙個指向棧頂的指標即可 類宣告如下 typedef int stackelement class ...
資料結構 棧 鍊錶的實現
鍊錶的實現和陣列的實現最大的不同在於鍊錶的插入操作代價要低於陣列,不過總體代價還是陣列更低,因為鍊錶的構造和連線部分代價其實很高。基本結構 private node head null push操作 public void push string str pop操作 public string po...
資料結構 棧的鍊錶實現
1.構造結構體作為鍊錶的節點 typedef struct node linkstack 2.建棧操作 為指標s分配一塊空間,返回後作為鍊錶的頭節點。其後繼為空,表示棧為空。向棧中壓入元素後,它的直接後繼就是棧頂元素。linkstack createstack 3.判斷棧是否為空 int isemp...