棧和佇列習題

2021-10-10 08:00:53 字數 3119 閱讀 6090

public

class

mystack

//出棧操作

public integer pop()

//通過下標找到當前的棧頂元素

int ret = elem[size-1]

; size--

;return ret;

}//取棧頂元素

public integer peek()

return elem[size-1]

;}}

(2)用單鏈表實現棧:

public

class

mystackbylinkedlist

}//建立乙個傀儡節點

public node head =

newnode(-

1);//入棧:頭插法

public

void

push

(int x)

//出棧:頭刪

public integer pop()

//開始刪除

head.next = todel.next;

//返回棧頂元素

return todel.data;

}public integer peek()

return head.next.data;

}}

public

class

myqueue

//單鏈表的頭

public node head;

//單鏈表的尾巴

public node tail;

//入佇列

public

void

offer

(int x)

//出佇列

public integer poll()

//進行刪除操作

head = head.next;

//如果當前隊列為空,將tail也變為null

if(head == null)

return head.data;

}public integer peek()

return head.data;}}

}

(2)用陣列實現雙端佇列

public

class

myqueuebyarray

//進行插入操作

elem[tail]

= x;

tail++

;//如果當前陣列已經滿了,那麼就讓尾巴指向隊首

if(tail >= size)

size++;}

public integer poll()

//找到隊首元素

int ret = elem[head]

; head++;if

(head >= size)

size--

;return ret;

}public integer peek()

return elem[head];}

}

public

boolean

isequals

(string s)')

;for

(int i =

0; i < s.

length()

; i++)if

(stack.

isempty()

)int top = stack.

pop();

if(map.

get(top)

== c)

return

false;}

if(stack.

isempty()

)return

false

;}

public

class 基於佇列實現棧

//出棧

public integer pop()

while

(a.size()

>1)

int ret = a.

poll()

;swap()

;return ret;

}public integer peek()

while

(a.size()

>1)

int ret = a.

poll()

; b.

offer

(ret)

;swap()

;return ret;

}private

void

swap()

public

boolean

empty()

}

public

class 基於棧實現佇列

a.push

(x);

}public integer poll()

while

(!b.

empty()

)return b.

pop();

}public integer peek()

while

(!b.

empty()

)return b.

peek()

;}public

boolean

isempty()

}

public

class 最小棧

int min = b.

peek()

;if(x < min)

b.push

(min);}

public integer pop()

b.pop();

return a.

pop();

}public integer peek()

return a.

peek()

;}public integer getmin()

return b.

peek()

;}}

棧和佇列習題二

目錄 一 實現乙個棧,要求實現push 入棧 pop 出棧 min 返回最小值 的時間複雜度為o 1 二 元素出棧 入棧順序的合法性。如入棧的序列 1,2,3,4,5 出棧序列為 4,5,3,2,1 三 乙個陣列實現兩個棧 共享棧 注 以上三個題的完整 至 github 檢視 1 定義 思路 使用兩...

棧與佇列習題選做

1 假設以i和o表示入棧和出棧操作,棧的初態和終態均為空,入棧和出棧的操作序列可表示為僅由i和o組成的序列,可以操作的序列為合法序列,否則為非法序列,寫出乙個演算法,判定所給的操作序列是否合法,如果合法,返回true,非法返回false bool empty stack seqstack l boo...

棧和佇列 單調佇列 單調棧

講解部落格鏈結 一 單調棧 1 什麼是單調棧?單調棧是指乙個棧內部元素具有嚴格單調性 單調遞增,單調遞減 的一種資料結構。2 單調棧的兩個性質 滿足從棧頂到棧底具有嚴格的單調性 滿足後進先出的特徵,越靠近棧底的元素越早的進棧。3 元素進棧的過程 對於當前進棧元素x 如果x 棧頂元素,x 進棧。否則 ...