劍指offer面試題7

2021-06-22 04:23:54 字數 2401 閱讀 4140

面試題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 預備知識 棧的定義 模板函式 思路 面對乙個複雜的問題,我們可以舉幾個具體的例子來尋找規律,對於本題目,我們可以通過舉例來分析它...