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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

字符串括号匹配c语言,数据结构C语言括号的检验源程序 , 数据结构(C) 请用类C语言实现括号匹配的检验这个算法...

發布時間:2024/1/1 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 字符串括号匹配c语言,数据结构C语言括号的检验源程序 , 数据结构(C) 请用类C语言实现括号匹配的检验这个算法... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題標題

數據結構C語言括號的檢驗源程序 , 數據結構(C) 請用類C語言實現括號匹配的檢驗這個算法

2019-8-21來自ip:13.149.196.77的網友咨詢

瀏覽量:270?手機版

問題補充:

數據結構C語言括號的檢驗源程序 , 數據結構(C) 請用類C語言實現括號匹配的檢驗這個算法

網友答案

#include#includeusing namespace std;#define Maxsize 50class stack{private:char *st;int top;public:stack(){top=-1;st=new charMaxsize;}void clear(){top=-1;}bool isempty(){if(top==-1)return true;elsereturn false;}bool isfull(){if(top==Maxsize-1)return true;elsereturn false;}bool push(int item){if(top==Maxsize-1){coutreturn false;}else{st++top=item;return true;}}bool pop(char &item){if(top==-1){coutreturn false;}else{item=sttop--;return true;}}bool rtop(char &item){if(top==-1){coutreturn false;}else{item=sttop;return true;}}~stack(){delete st;}};bool match(char *p,int c){char m;int i = 0 ;stack q;while(i{switch(pi){case '{':case '':case '(':q.push(pi);break;case '}':if(!q.isempty()&&q.pop(m)&&m=='{'){break;}elsereturn false;case '':if(!q.isempty()&&q.pop(m)&&m==''){break;}else return false;case ')':if(!q.isempty()&&q.pop(m)&&m==')'){break;}else return false;}i++;} return q.isempty(); }void main(){char arrMaxsize;char *s=arr;int c;coutcin.getline(arr,Maxsize);c=strlen(s);if(match(s,c)){coutelse{cout}望。

網友答案

#include#includeusing namespace std;#define Maxsize 50class stack{private: char *st; int top;public: stack() { top=-1; st=new charMaxsize; } void clear() { top=-1; } bool isempty() { if(top==-1) return true; else return false; } bool isfull() { if(top==Maxsize-1) return true; else return false; } bool push(int item) { if(top==Maxsize-1) { cout

網友答案

這是一個簡單的括號匹配程序, 不過我認為對于你學習足夠了#include<stdio.h> #define MAX 20 typedef struct { char dataMAX; //棧中的數組data int top; //棧頂位置 }sstack; //順序棧 void initstack(sstack *s)//初始化順序棧 { s->top= 0; }void push(sstack *s, char x) { // s為棧指針,x為入棧的新元素,將x壓入到s棧頂 if(s->top==MAX-1) //檢查是否棧滿 printf"棧已滿,不能入棧!"; else { s->top++; //使top指向新的位置 s->datas->top-1=x; //把x放入新棧頂 } } void pop(sstack *s) { //若棧s不為空,則刪除棧頂元素 if(s->top==0 ) //檢查是否棧空 printf"棧為空,不能出棧!";/*棧空*/ else s->top--;//修改棧頂指針 } char gettop(sstack *s) { //若棧s不為空,則取得棧頂元素 if(s->top==0) //棧空 printf"棧為空!"; else return(s->datas->top); //返回棧頂元素 } void check(sstack *s) { int bool; char ch; push(s,'#'); //在棧底壓入#,做為結束標志 scanf("%c",&ch); //讀入一個字符 bool=1; //假設括號匹配 while(ch!='#'&&bool) //當讀入的字符不是結束符且目前括號匹配 { if(ch=='(') push(s,ch); //如果是左括號則入棧 if(ch==')' //如果是右括號 if(ch=gettop(s)=='#') bool=0; //如果棧頂是結束符,即沒有匹配的'',則設置不匹配標志,此時表示''多于'' else pop(s); //左括號出棧,表與右括號配對 scanf("%c",&ch); //讀入下一個字符,繼續檢查 } if(gettop(s)!='#')&&bool==1 ; //棧頂還有'',則''多于'',設置不匹配標志 if(ch==')') printf"括號不匹配"; else printf"括號匹配"; } void main() { sstack st,*s; s=&st; initstack(s); //初始化棧 printf"請輸入由''和''組成的字符串,該字符串以'#'結束,程序將檢查字符串是否括號匹配\n"); check(s);//進行括號匹配的檢查 }希望對你有幫助

網友答案

#includestruct T{int tag;};struct T t128;int top=0;int isEmpty(){if(top=127) return 1;else return 0;}void push(int tag){if(isFull()) {return;}ttop.tag=tag;top++;}int out(){if(isEmpty()) {return -1;}int number=0;number=ttop.tag;ttop.tag=0;top--;return number;}int check(char *p){int x128={0};int temp=0;int k=0;while(*p!='\0'){if(*p=='{') push(temp);if(*p=='}') k=out();if(k==-1) break;temp++;p++;}if(top!=0){while(!isEmpty()){printf("%d處的{沒有匹配,缺少}\n",out()-1);}}else{printf("%d處的}沒有匹配,缺少{\n",temp);}return 0;}main(){char *x="main(){int x=0;while(true){int x=324;}printf('dsgdg');}}}";printf("%d\n",check(x));}

網友答案

輸入:串中只含有'', ''兩個符號,判斷是否括號匹配并不需要真正的入棧、出棧,用top移動模擬即可#include <stdio.h>int main(){char s256, *p;int top = 0;scanf("%s", s);for(p=s; *p; p++){if(*p == '(')++top; //入else --top; //出if(top < 0)break; //無左括號與之匹配}if(!*p && !top)puts("Yes");else puts("No");}

網友答案

從你的代碼可以看出,你想在開始將‘’壓棧,作為結束條件。

在循環中采集每次的輸入字符,如果不匹配,則壓棧輸入字符;如果匹配,為‘’字符,則將棧中所有字符全部出棧。

上面代碼的主要問題是循環條件的判斷的問題,你可以分析下。

下面是我在你的代碼基礎上進行了小小修改后的代碼,提供給你參考下。

保存為CPP文件,用C++編譯測試通過。

#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0typedef char SElemType;typedef int Status;#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef struct _SqStack{ SElemType *base; SElemType *top; int stacksize;}SqStack;Status InitStack(SqStack &S){ S.base = (SElemType *)malloc(STACK_INIT_SIZE *sizeof(SElemType)); if(!S.base) return FALSE; S.top = S.base; S.stacksize = STACK_INIT_SIZE; return OK;}Status Push(SqStack &S, SElemType e){ *S.top++ = e; printf("0x%.8x: PUSH %c\n", S.top, e); return OK;}Status Pop(SqStack &S, SElemType &e){ if(S.top == S.base) return ERROR; e = *--S.top; printf("0x%.8x: POP %c\n", S.top, e); return OK;}Status StackEmpty(SqStack &S){ if(S.base == S.top) return TRUE; else return FALSE;}main(){ SqStack S; SElemType e; //初始化棧 InitStack(S); //將 壓入棧底,作為結束條件 e=''; Push(S, e); //循環接收鍵盤字符, //不匹配則將字符壓棧, //匹配則將 與 之間字符全部出棧,只到棧底結束 while(S.top > S.base) { fflush(stdin); e = getchar(); if (e != '') { Push(S, e); } else { printf("\n"); printf("----Get matched char ''\n"); printf("----POP Stack----\n"); S.top --; while(*(S.top)!= '') { Pop(S, e); } } fflush(stdout); } Pop(S, e); printf("\n"); //釋放棧 if(StackEmpty(S)) return TRUE; else return FALSE;}

網友答案

#include #include int isLeftBracket(char ch){ return ch=='(' || ch=='' || ch=='{' || ch=='';}int mathcBracket(char left,char right){return (left==')' && right == '(') || (left=='' && right == '') || (left=='}' && right == '{') || (left=='>' && right == ' 0 && mathcBracket(stri,stacktop-1) ){top--;continue;}else{break;}}}if(stri == '\0'){ printf("Yes\n"); }else{ printf("No\n");} }return 0;}應該沒有什么問題。

我來回答

驗證碼:

大家還關注

總結

以上是生活随笔為你收集整理的字符串括号匹配c语言,数据结构C语言括号的检验源程序 , 数据结构(C) 请用类C语言实现括号匹配的检验这个算法...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。