日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

BJFU_数据结构习题_241双栈的基本操作

發(fā)布時(shí)間:2023/12/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BJFU_数据结构习题_241双栈的基本操作 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

歡迎登錄北京林業(yè)大學(xué)OJ系統(tǒng)
http://www.bjfuacm.com

241雙棧的基本操作

描述
將編號(hào)為0和1的兩個(gè)棧存放于一個(gè)數(shù)組空間V[m]中,棧底分別處于數(shù)組的兩端。當(dāng)?shù)?號(hào)棧的棧頂指針top[0]等于-1時(shí)該棧為空;當(dāng)?shù)?號(hào)棧的棧頂指針top[1]等于m時(shí),該棧為空。兩個(gè)棧均從兩端向中間增長(zhǎng)(見(jiàn)下圖)。試編寫雙棧初始化,判斷棧空、棧滿、進(jìn)棧和出棧算法的函數(shù)。函數(shù)調(diào)用次序依次為:進(jìn)棧、棧滿的判斷、出棧、棧空的判斷。
雙棧數(shù)據(jù)結(jié)構(gòu)的定義如下:
typedef struct
{
int top[2], bot[2];//棧頂和棧底指針
SElemType *V; //棧數(shù)組
int m;//棧最大可容納元素個(gè)數(shù)
}DblStack;

輸入
多組數(shù)據(jù),每組數(shù)據(jù)有四行,每行的數(shù)據(jù)之間均用空格分隔。第一行為一個(gè)整數(shù)m,表示數(shù)組V的大小,第二行為四個(gè)整數(shù)e0、e1、d0、d1,e0和e1分別代表壓入0號(hào)棧和1號(hào)棧的整數(shù)序列E0和E1的長(zhǎng)度(依次連續(xù)入棧,中間沒(méi)有出棧的情況),d0和d1分別代表從0號(hào)棧和1號(hào)棧彈出的序列的長(zhǎng)度(依次連續(xù)出棧,中間沒(méi)有入棧的情況)。第三行和第四行分別表示序列E0和E1。當(dāng)m=0時(shí),輸入結(jié)束。

輸出
對(duì)于每組數(shù)據(jù)輸出三行。第一行代表進(jìn)棧操作完成時(shí)棧是否為滿(出棧操作尚未執(zhí)行),棧滿輸出1,棧不滿輸出0。第二行和第三行的數(shù)據(jù)分別對(duì)應(yīng)0號(hào)棧和1號(hào)棧。第二行包括d0+1個(gè)整數(shù),其中前d0個(gè)整數(shù)代表出棧序列D0,最后一個(gè)整數(shù)代表出棧操作完成時(shí)0號(hào)棧是否為空,棧空輸出0,不空輸出1。第三行包括d1+1個(gè)整數(shù),其中前d1個(gè)整數(shù)代表出棧序列D1,最后一個(gè)整數(shù)代表出棧操作完成時(shí)1號(hào)棧是否為空,棧空輸出0,不空輸出1。整數(shù)之間用空格分隔。

輸入樣例 1
7
3 4 2 2
1 2 3
2 3 4 5
12
4 6 4 3
1 3 4 5
1 3 5 6 8 1
0
輸出樣例 1
1
3 2 1
5 4 1
0
5 4 3 1 0
1 8 6 1

#include<iostream> using namespace std; #define Max 100 typedef struct LNode {int *top[2];int *base[2];int maxsize; }DblStack; void Init(DblStack &S,int n) {S.base[0]=new int[Max];S.base[1]=S.base[0]+n-1;S.top[0]=S.base[0];S.top[1]=S.base[1];S.maxsize=n; } int IsEmpty(int *top,int *base) {return top==base?1:0; } int IsFull(int *top1,int *top2) {return top1>top2?1:0; } void Push0(DblStack &S) {int x;cin>>x;*S.top[0]=x;S.top[0]++; } void Push1(DblStack &S) {int x;cin>>x;*S.top[1]=x;S.top[1]--; } void Pop0(DblStack &S) {S.top[0]--;cout<<*S.top[0]<<" "; } void Pop1(DblStack &S) {S.top[1]++;cout<<*S.top[1]<<" "; } int main() {DblStack S;int n,e0,e1,d0,d1;while(cin>>n&&n!=0){Init(S,n);cin>>e0>>e1>>d0>>d1;while(e0--)Push0(S);while(e1--)Push1(S);cout<<IsFull(S.top[0],S.top[1])<<endl;while(d0--)Pop0(S);cout<<!IsEmpty(S.top[0],S.base[0])<<endl;while(d1--)Pop1(S);cout<<!IsEmpty(S.top[1],S.base[1])<<endl;}return 0; }

總結(jié)

以上是生活随笔為你收集整理的BJFU_数据结构习题_241双栈的基本操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。