棧和佇列都是線性表
1.棧----->只能一頭插入 / 一頭刪除
2.出入棧規則:
先進後出 first in last out(filo)
後進先出 last in first out(lifo)
3.存int型別
class stack
4.棧的應用
題目:有效的括號(括號匹配問題)
// {} () 有效匹配
// 有效匹配
// ([{}]) 有效匹配
//// }}} 右括號多
// (} 左右括號不匹配
【解題思路】:遍歷字串中的每個字元
如果是左括號:入棧
如果是右括號:
若棧是空的:則不匹配(則右括號多了) }}}
} 出棧
如果左右括號不匹配:則不匹配 (}(
} 否則繼續迴圈
如果棧不為空:則不匹配(右括號多) '
:char left=stack.
remove
(stack.
size()
-1);
if(!(
(left==
'('&& c==
')')
||(left==
'['&&c==
']')
||(left=='')
))break;}
default
:break;}
}if(stack.
isempty()
)else
}}
1.佇列---->在一頭插入 / 另一頭刪除
2.出入佇列規則:
先進先出 first in first out(fifo)
雙端佇列 可以在任意兩頭進出
3.佇列的應用:
廣度優先遍歷(廣搜)
(順序表不容易實現佇列,通常使用鍊錶實現)
鍊錶實現佇列的基本操作(利用鍊錶的頭刪,尾插實現隊 列)
//單鏈表實現佇列(利用鍊錶的頭刪,尾插實現佇列)
class
node
node
(int val)
}public
class
queue
else
rear=node;
size++;}
//頭刪
public
void
pop()if
(front!=null)
size--;}
//返回隊首元素
public
intfront()
return front.val;
}//返回隊尾元素
public
intrear()
return rear.val;
}//返回隊內元素個數
public
intsize()
//返回佇列是否為空
public
boolean
isempty()
}
棧和佇列的相關知識
棧和佇列是兩種特殊的線性表 它們的資料元素之間具有順序的邏輯關係,都可以採用順序儲存結構和鏈式儲存結構 線形表的插入和刪除操作不受限制,可以再任意位置進行 棧的插入和刪除操作只允許在表的一端進行 佇列的插入和刪除操作分別在表的兩端進行。棧的特點是後進先出 lifo 佇列的特點是先進先出 fifo 佇...
棧相關知識
1.linux檢視修改執行緒預設棧空間大小 ulimit s a 通過命令 ulimit s 檢視linux的預設棧空間大小,預設情況下 為10240 即10m b 通過命令 ulimit s 設定大小值 臨時改變棧空間大小 ulimit s 102400,即修改為100m c 可以在 etc rc...
棧和佇列基本知識
一 棧和佇列基本知識 1 棧和佇列的建立。2 棧和佇列的初始化。3 棧的增容。4 入棧,出棧,入隊,出隊。5 取得棧頂,隊頭和隊尾元素。6 求棧和佇列的大小,判斷棧和佇列是否為空。二 棧的基本操作 void stackinit stack s 棧的初始化 void expandstack stack...