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 進棧。否則 ...