棧和佇列相關知識

2021-10-02 08:47:34 字數 1666 閱讀 4437

棧和佇列都是線性表

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...