資料結構 使用鍊錶實現棧

2021-10-02 06:53:21 字數 3724 閱讀 8829

// 使用者傳來只傳來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...