棧(stack):一種特殊的 線性表,其只允許在固定的一端(棧頂)進行插入和刪除元素操作(另一端為棧底)。棧中的資料元素遵循先進後出(lifo)的原則。
棧的一些基本方法:
1.public stack();建立棧
2. public e push(); 入棧
3. public e pop(); 出棧(刪除棧頂元素)
4. public e peek()檢視棧頂元素(不刪除)
5. public boolean empty(); 判斷棧是否為空
棧的實現(用陣列):
**如下(以int型別資料為例):
public class mystack
public boolean isfull()
public int
push
(int value)
this.elem[this.top]
= value;
this.top++
;return this.elem[this.top-1]
;}public int
pop(
) this.top--
;return this.elem[top];}
public int
peek()
return this.elem[top-1]
;}public boolean empty()
public int
size()
public static
void
main
(string[
] args)
}
棧的應用:
例:括號匹配問題:
給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串 s ,判斷字串是否有效。
有效字串需滿足:
1.左括號必須用相同型別的右括號閉合。
2.左括號必須以正確的順序閉合。
**如下:
class solution
else
char ret = stack.
peek()
;if(ret ==
'('&& ch ==
')'|| ret ==
'['&& ch ==
']'|| ret =='')
else}}
if(!stack.
empty()
)return true;
}}
棧的基本操作及實現(順序棧)
順序儲存結構來實現的棧稱為順序棧,它利用一組位址連續的儲存單元存放自棧底到棧頂的資料元素,同時附設乙個指標top來指示當前棧頂的位置。注意,是c 特有的用來表示引用呼叫,所以此檔案應以.cpp字尾儲存 結構體為 define maxsize 50 typedef int elemtype typed...
鏈棧及基本操作的實現
include pch.h include include include include 因為棧鏈結點是動態分配的,不考慮棧溢位 typedef struct lnode lnode 棧初始化 帶頭結點 void intistack lnode lst 判斷棧是否為空 int isempty ln...
棧的定義及基本演算法實現
棧定義 是一種只能在一端進行插入或刪除操作的線性表 1 允許 進行插入 刪除操作的一端稱為 棧 頂 2 表的另一端稱為 棧底 3 當棧中沒有資料元素時 稱為 空棧 4 棧的插入操作通常稱為 進棧 或 入 棧 5 棧的刪除操作通常稱為 退棧 或 出棧 例如 死胡同就是乙個棧 洗1疊碗時的取放 棧據有先...