關於棧和佇列的三個題目

2022-06-22 17:42:10 字數 1164 閱讀 8316

1. 用兩個棧實現乙個佇列的功能(c++實現)

思路:

第一步,入隊:用乙個棧的push操作實現,將入隊值壓入乙個棧中(棧一)

第二步,出隊:在另乙個棧中進行出棧操作(棧二):若棧二非空,直接從棧二中pop出即可

若棧二為空,則將棧一中的所有元素pop出來,一次push進棧二中,然後從棧二中pop出元素。

注:只有當stack2 為空時,才會從stack1中pop出元素push進stack2中。

c++**如下:

#include #include using namespace std;

templatestruct myqueue

t front()

}return s2.top();

}void pop()

}if(!s2.empty())

s2.pop();

}stacks1;

stacks2;

};int main()

for(i=0; i<10; ++i)

node;

typedef struct stackqueue;

//定義入棧

queue *push(queue *hq,int x)else

return hq;

}//定義出棧:

queue *pop(queue *hq)else

hq->top=p;

hq->top->next=null;

} return hq;

}}

3. 程式設計實現佇列的入隊和出隊操作

#include #include #include #include //首先定義佇列

typedef struct studentnode;

typedef struct linkqueuequeue;

//定義入隊

queue *insert(queue *hq,int x)else

return hq;

}

//佇列出隊

queue *del (queue *hq)else

} return hq;

}

ok!

關於三個作者

因歷史原因,本blog專欄名字叫做fudan abc,但時過境遷,如今blog維護者已不僅僅是復旦人,一名交大才子加入了這支革命隊伍.昨天 兩個曾經的復旦人,復旦人甲和復旦人乙.今天 兩個曾經的復旦人,復旦人甲和復旦人乙.乙個曾經的交大人,交大人甲.復旦人甲目前主要寫uhci驅動的分析.分析的是2....

棧的三個簡單應用

根據真題需求,主要再回顧一下棧在括號匹配 表示式求值和共享棧的運用。問題描述 演算法思想 若是左括號,入棧 若是右括號,出棧乙個左括號判 斷是否與之匹配 檢驗到字串尾時,還要檢查棧是否為空,只有棧空,整個字串才是括號匹配的。演算法實現 bool check char str sharestack 棧...

棧和佇列經典題目彙總

1.用兩個棧實現 入棧 乙個棧作為資料棧,乙個棧作為最小值棧,往資料棧中直接壓入資料,比較此時資料棧棧頂元素和min棧棧頂元素的大小,若min棧的棧頂元素小,則往min棧中壓入棧頂元素,若要資料棧棧頂元素小,則壓入資料棧棧頂元素。出棧 資料棧和min棧同時pop 取最小值 取min棧的棧頂元素 用兩...