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棧的棧頂元素 用兩...