面試題7:用兩個棧實現佇列
using namespace std;
template class cqueue
;
預備知識:
佇列:佇列也是一種常見的資料結構;特點是先進先出(fifo)
在stl中有stack和queue兩個容器
template > class stack;
成員函式:
empty;
size; //大小
top; //訪問下乙個元素
push; //插入元素
pop; //移除頂部元素
template > class queue;
成員函式:
empty 判斷容器是否為空
size 佇列大小
front 訪問下乙個元素
back 訪問最後乙個元素
push 插入元素
pop 移除元素
思路:定義兩個棧stack1和stack2,先把資料壓入stack1中,然後將stack1的資料彈出,壓入stack2中,之後逐個彈出stack2中的元素,這樣就可以實現利用兩個棧實現佇列的功能。
**實現:
queue.h
#pragma once //在標頭檔案的最開始加入這條指令就能夠保證標頭檔案被編譯一次
#include //stack容器,stack
#include using namespace std;
template class cqueue
;//建構函式
template cqueue::cqueue(void)
//析構函式
template cqueue::~cqueue(void)
//在佇列尾部插入結點
//在佇列頭部刪除結點
templatet cqueue::deletehead()
}if(stack2.size() == 0)
throw new exception("queue is empty");
t head = stack2.top(); //access next element
stack2.pop(); //remove top element
return head;
}
queue.cpp
#include "stdafx.h"
#include "queue.h"
#include //queue容器
main.cpp
#include "stdafx.h"
#include "queue.h"
void test(char actual, char expected)
int _tmain(int argc, _tchar* argv)
另附**:
// 面試題7.cpp : 定義控制台應用程式的入口點。
//// 用兩個棧實現佇列
#include "stdafx.h"
#include #include using namespace std;
template class cqueue
~cqueue(void);//{}
t deletehead();
private:
stackstack1;
stackstack2;
};/*************類的實現******/
templatecqueue::cqueue(void){}
templatecqueue::~cqueue(void){}
templatet cqueue::deletehead()
} if(stack2.size() == 0)
throw new exception("queue is empty");
t head = stack2.top(); //棧頂元素
stack2.pop(); //出棧
return head;
}/********測試*******/
void test1()
void test2()
int _tmain(int argc, _tchar* argv)
劍指offer面試題11
面試題1 數值的整數的次方 題目 實現函式double power double base,int exponent 求base的 exponent次方。不得使用庫函式,同時不需要考慮大數問題。思路 首先應該明確指數的可能取值 正整數,0,負整數 另外還需要考慮底數是0的情形。對於負整指數,我們可以...
劍指offer面試題15
面試題15 鍊錶中倒數第k個結點 題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾結點是倒數第乙個結點。例如乙個鍊錶有6個結點,從頭結點開始它們的值依次是1 2 3 4 5 6。這個鍊錶的倒數第3個結點是值為4的結點。預備知識 鍊錶結點的定義如下 ...
劍指offer面試題21
面試題21 包含min函式的棧 題目 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的min函式。在該棧中,呼叫min push及pop的時間複雜度都是o 1 預備知識 棧的定義 模板函式 思路 面對乙個複雜的問題,我們可以舉幾個具體的例子來尋找規律,對於本題目,我們可以通過舉例來分析它...