棧是非常常見的資料結構,比如作業系統會給每個執行緒建立乙個棧用來儲存函式呼叫時哥哥函式的引數、返回位址和臨時變數等。棧的特點是後進先出,最後被壓入(push)的元素會被第乙個彈出(pop)
通常棧是乙個不考慮排序的資料結構,需要o(n)才能找到最大或者最小元素
佇列是另一種很常見的資料結構,和棧不同,佇列的特點是先進先出,即第乙個進入佇列的元素將會第乙個出來。在廣度優先演算法中用佇列
棧和佇列雖然是針鋒相對的兩個資料結構,但有意思的是他們會互相聯絡
面試題9.用兩個棧實現乙個佇列
題目:用兩個棧實現乙個佇列,宣告如下,請事先兩個函式addendtail和deletehead,分別完成在佇列尾部插入節點和佇列頭部刪除節點的功能
思路:兩個棧,stack1負責模擬新增隊尾元素,stack2負責模擬彈出隊首元素
每當元素需要加入佇列,那麼就會把stack2的元素返回stack1,最後往stack1中壓棧
每當元素需要彈出,就把stack1中的元素彈出,彈入到stack2中,最後彈出棧頂元素
publicclass
stackqueue
else
stack1.push(num);
system.out.println(num+" push success!");}}
public
intdeletehead()
}else
if(tmp>0)
return
stack2.pop();
}public
void
queuesize()
public
static
void
main(string args)
}
相關題目:用兩個佇列實現乙個棧
publicclass
queuestack
else
queue1.addlast(value);
}system.out.println(value+" push success!");
}public
void
pop()
tmp=queue1.pollfirst();
}if(tmp>0)
else
if(tmp==-1)
}public
void
size()
public
static
void main(string args) throws
interruptedexception
}
資料結構 棧和佇列
棧 基礎 知識棧 練習題 佇列 基礎知識 棧示意圖 後進先出 順序棧結構定義 define maxsize 1024 struct stack 操作函式 push 入棧 pop 出棧 struct lstack 鏈棧示意圖 操作函式 push 入棧 pop 出棧 注意 也可以直接呼叫系統已經寫好的庫...
資料結構 棧和佇列
本章的基本內容是 兩種特殊的線性表 棧和佇列 從資料結構角度看,棧和佇列是操作受限的線性表,他們的邏輯結構相同。從抽象資料型別角度看,棧和佇列是兩種重要的抽象資料型別。p棧 限定僅在表的一端進行插入和刪除操作的線性表。p允許插入和刪除的一端稱為棧頂,另一端稱為棧底。p空棧 不含任何資料元素的棧。a ...
資料結構 棧和佇列
用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。class solution int pop node stack2.top stack2.pop return node private stack stack1 stack stack2 大家都知道斐波那契數列,現...