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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Problem A: 判断操作是否合法(栈和队列)

發(fā)布時間:2025/3/8 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Problem A: 判断操作是否合法(栈和队列) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Problem A: 判斷操作是否合法(棧和隊(duì)列)

Time Limit: 1 Sec??Memory Limit: 128 MB
Submit: 67??Solved: 22

Description

假設(shè)以I和O分別表示進(jìn)棧和出棧操作,棧的初態(tài)和終態(tài)均為空,進(jìn)棧和出棧的操作序列可表示為僅由I和O組成的序列。

順序棧的定義為

typedef struct { ElemType data[SizeMax]; int top; }SqStack; 編寫一個算法,判斷棧中的序列是否合法!若合法則返回1,否則返回0. 需編寫的算法為:int judge(SqStack *s);

Input

輸入為一個字符串,表示進(jìn)棧出棧的操作序列,該序列存儲在棧中。

Output

若操作序列合法則輸出“Yes”,否則輸出"No"。

Sample Input

IOIIOIOO

Sample Output

Yes

HINT

1、只需提交你所編寫的算法


2、棧的初態(tài)和終態(tài)均為空

#include <stdio.h> #include <stdlib.h> #include <string.h> #define SizeMax 105 typedef char ElemType; typedef struct {ElemType data[SizeMax];int top; }SqStack; void InitStack(SqStack *&s) {s=(SqStack*)malloc(sizeof(SqStack));s->top=-1; } bool Push(SqStack *&s,ElemType c) {if(s->top==SizeMax-1)return false;s->top++;s->data[s->top]=c;return true; } int judge(SqStack *s) {int i=-1;if(s->top==-1)return 1;while(s->top>=-1){if(s->data[s->top]=='I')i++;if(s->data[s->top]=='O')i--;if(i>-1)return 0;s->top--;}if(i!=-1)return 0;else return 1; } void DestroyStack(SqStack *&s) {free(s); } int main() {SqStack *s=NULL;InitStack(s);char c[SizeMax];gets(c);for(int i=0;i<(int)strlen(c);i++)Push(s,c[i]);if(judge(s))printf("Yes\n");else printf("No\n");DestroyStack(s);return 0; }

總結(jié)

以上是生活随笔為你收集整理的Problem A: 判断操作是否合法(栈和队列)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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