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

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

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

Description

假設以I和O分別表示進棧和出棧操作,棧的初態和終態均為空,進棧和出棧的操作序列可表示為僅由I和O組成的序列。

順序棧的定義為

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

Input

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

Output

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

Sample Input

IOIIOIOO

Sample Output

Yes

HINT

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


2、棧的初態和終態均為空

#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;
}


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536207.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536207.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536207.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Problem G: 函數---判斷日期(年月日)是否合法

Problem G: 函數---判斷日期&#xff08;年月日&#xff09;是否合法 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 566 Solved: 240Description 編寫函數isValid_date&#xff0c;函數聲明如下: int isValid_date(int year,int month,int day); //判斷日期&#xff08;年…

Problem H: 今年第幾天?

Problem H: 今年第幾天&#xff1f; Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 723 Solved: 310Description 定義一個函數&#xff0c;其參數為年、月、日的值&#xff0c;返回這一天為該年的第幾天。要求在main函數中輸入年月日&#xff0c;然后調用這個函數求值&…

Problem I: 函數---判斷某年某月某日是這一年中的第幾天

Problem I: 函數---判斷某年某月某日是這一年中的第幾天 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 457 Solved: 194Description 在主程序(main)中輸入某年某月某日&#xff0c;例如2012 9 18(年月日之間用空格隔開)&#xff0c; 調用函數dayth來得到某年某月某日是這…

Problem C: 括號匹配(棧和隊列)

Problem C: 括號匹配&#xff08;棧和隊列&#xff09; Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 76 Solved: 18[Submit][Status][Web Board]Description 假設一個表達式中只允許包含三種括號&#xff1a;圓括號“(”和“)”&#xff0c;方括號“[”和“]”和花括號“…

Problem D: 棧的基本運算(棧和隊列)

Problem D: 棧的基本運算&#xff08;棧和隊列&#xff09; Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 43 Solved: 15[Submit][Status][Web Board]Description 編寫一個程序&#xff0c;實現順序棧的各種基本運算&#xff0c;主函數已給出&#xff0c;請補充每一種方法…

Problem B: C語言習題 矩陣元素變換

Problem B: C語言習題 矩陣元素變換 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 942 Solved: 558[Submit][Status][Web Board]Description 將一個nn(2<n<10,n為奇數)的矩陣中最大的元素放在中心&#xff0c;4個角分別放4個最小的元素&#xff08;按從左到右、從上…

Problem D: 刪出多余的空格

Problem D: 刪出多余的空格 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 667 Solved: 308[Submit][Status][Web Board]Description 小平在給弟弟檢查英語作業時時&#xff0c;發現每個英語句子單詞之間的空格個數不等&#xff0c;請你編程幫他把句子中多余的空格去掉&am…

Problem D: 順序串的基本運算

Problem D: 順序串的基本運算 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 73 Solved: 28[Submit][Status][Web Board]Description 編寫一個程序&#xff0c;實現順序串的各種基本運算&#xff0c;主函數已給出&#xff0c;請補充每一種方法。 1、建立串s"abcdefgh…

骨牌鋪方格

骨牌鋪方格 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 46495 Accepted Submission(s): 22470 Problem Description在2n的一個長方形方格中,用一個1 2的骨牌鋪滿方格,輸入n ,輸出鋪放方案的總數.例如n3時…

遞歸思想完成n皇后問題

已經很長時間不敲代碼了&#xff0c;感覺自己越來與頹廢&#xff0c;所以現在又想做回一名苦逼的程序員&#xff0c;開啟自己的代碼之路。 我是根據視頻敲的&#xff0c;沒有題目&#xff0c;先看個四皇后問題吧。 所謂4皇后問題就是求解如何在44的棋盤上無沖突的擺放4個皇后棋…

POJ1163 數字三角形

1.題目信息&#xff08;http://poj.org/problem?id1163&#xff09; The TriangleTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 30397 Accepted: 17973 Description 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5(Figure 1) Figure 1 shows a number tri…

virtualbox的USB識別

VirtualBox識別USB教程 作者&#xff1a;Vincent June 13, 2017 在Virtualbox虛擬機配置面板中打開USB設備選項&#xff0c;分別勾選上“啟動USB控制器”“啟用usb2.0控制器”選項&#xff0c;如果有錯誤去https://www.virtualbox.org/wiki/Downloads 下載相應版本的插件包&a…

ubuntu實現簡單的劃詞工具

ubuntu實現簡單的劃詞工具 由于ubuntu下面沒有比較好用的劃詞翻譯工具&#xff0c;而且本人比較喜歡有道詞典&#xff0c;雖然ubuntu下有deepin版本的有道詞典包&#xff0c;可是總是會有bug&#xff0c;卡死等等。所以自己參考別人寫了一個小工具&#xff0c;涉及shell和pyth…

動態規劃進階題目之滑雪

Problem F: 動態規劃進階題目之滑雪 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 4 Solved: 3[Submit][Status][Web Board]Description Michael喜歡滑雪百這并不奇怪&#xff0c; 因為滑雪的確很刺激。可是為了獲得速度&#xff0c;滑的區域必須向下傾斜&#xff0c;而且當…

修改win10我的文檔下載等移動別處

win10移動我的文檔&#xff0c;下載等到其他盤符辦法 解決辦法 1.選擇我的文檔&#xff0c;鼠標右鍵選擇屬性&#xff0c;在工具欄選擇位置&#xff0c;然后選擇想移動到哪里的盤符即可&#xff0c;如圖&#xff1a;2.操作完后選擇應用->確定&#xff0c;就這么簡單。

神奇的口袋

2755:神奇的口袋查看 提交 統計 提示 提問總時間限制: 10000ms 內存限制: 65536kB描述有一個神奇的口袋&#xff0c;總的容積是40&#xff0c;用這個口袋可以變出一些物品&#xff0c;這些物品的總體積必須是40。John現在有n個想要得到的物品&#xff0c;每個物品的體積分別是a…

Ubuntu16.04LTS修改開機動畫

ubuntu16.04LTS修改開機動畫 ubuntu自帶的開機動畫實在是很不滿美觀&#xff0c;但是又不想重寫&#xff0c;怎么辦&#xff1f; 接下來交你們一招。 1.開機動畫文件夾 Ubuntu14.04的開機動畫在/usr/share/plymouth文件夾內 2.下載開機動畫 兩種方式&#xff1a; 從Ubun…

Qt的Xml操作QDomDocument

Qt的Xml操作QDomDocument Qt對于Xml的支持是很好的&#xff0c;一些我們需要的操作應有盡有&#xff0c;下面簡單介紹一下怎樣使用。主要有以下幾點使用&#xff1a; 寫xml到文件讀xml添加節點到xml刪除xml中某節點信息修改xml中某節點信息 準備工作 .pro加入QT xml需要in…

2815:城堡問題

2815:城堡問題 查看提交統計提示提問 總時間限制: 1000ms 內存限制: 65536kB描述1 2 3 4 5 6 7 #############################1 # | # | # | | ######---#####---#---#####---#2 # # | # # # # ##---#####---#####---#####---#3 # …

冒泡排序法函數

文章目錄冒泡排序法的函數實現使用教程冒泡排序法的函數實現 話不多說上代碼&#xff0c;拿去直接用。 // 冒泡排序函數 /* * brief sort * param array為數組名稱&#xff0c;length為數組的長度&#xff0c;order為1或0,1代表從小到大排序 * 0代表從大到小排序…