用順序棧解決括號是否匹配
我的程式編譯成功了但是好像只能操作兩個字元的字串,長的字串結果都是printf("對應的左右括號不是一類的。\n");
求大神幫忙解答一下
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define Size 100
typedef struct
{
char str[Size];
int top;
}SeqStack;
void Initstack(SeqStack *s)
{
s->top =-1;
}
//
int IsEmpty(SeqStack *A)
{
return(A->top==-1? 1:0);
}
//進棧//
int Push(SeqStack *A,char m)
{
if(A->top==Size-1) return(0);
A->top++;
A->str[A->top]=m;
return(1);
}
//出棧
int Pop(SeqStack *A,char *m)
{
if(A->top==-1) return(1);
else
{
*m=A->str[A->top];
A->top--;
return(1);
}
}
//quzhi
int GetTop(SeqStack *A,char *m)
{
if(A->top==-1) return (0);
else
{
*m=A->str[A->top];
return (1);
}
}
//Match
int Match(char a,char b)
{
if(a=='('&&b==')') return(1);
else return(0);
if(a=='['&&b==']') return(1);
else return(0);
if(a=='{'&&b=='}') return(1);
else return(0);
}
void BracketMatch(char *str)
{
SeqStack S;
Initstack(&S);
int i;char ch;
for(i=0;str[i]!='\0';i++)
{
switch(str[i])
{
case '(':
case '[':
case '{':
Push(&S,str[i]);break;
case ')':
case ']':
case '}':
if(IsEmpty(&S))
{
printf("右括號多餘。\n");
return;
}
else
{
GetTop(&S,&ch);
if(Match(ch,str[i]))
Pop(&S,&ch);
else
{
printf("對應的左右括號不是一類的。\n");
return;
}
}
}
}
if(IsEmpty(&S))
printf("\n括號匹配。");
else
printf("\n左括號多餘");
}
int main()
{
char str[100];
printf("請輸入字串 :\n");
scanf("%s",str);
printf("%s",str);
BracketMatch(str);
return 0;
system("pause");
}
相關推薦
用順序棧解決括號是否匹配
我的程式編譯成功了但是好像只能操作兩個字元的字串,長的字串結果都是printf("對應的左右括號不是一類的。\n"); 求大神幫忙解答一下 #include <stdio.h> #include <stdlib.h> #include <
在資料結構中用順序棧解決括號匹配問題
對於給定的一個表示式,其中一定會用到大量的左右括號,有小括號,中括號,甚至大括號。如何才能判斷其中的括號是否是一一對應的。所以可以用資料結構中的順序棧來解決這個問題 。在此我就以小括號的匹配為例來說明。在匹配檢查時,我們建立一個空的順序棧。我們從左到右依次的進行檢查,當遇到的是左括號'('時,就讓其進棧。當遇
c++利用順序棧解決括號匹配問題
already 括號匹配問題 是否 data ems else if alt 問題 http 題目: 7-1 括號匹配 (30 分) 給定一串字符,不超過100個字符,可能包括括號、數字、字母、標點符號、空格,編程檢查這
【面試題】用棧解決括號匹配問題
思想:在表示式中,相同型別的括號(包括:()、[]、{})是成對出現的,並且當括號在表示式中巢狀時,不允許出現交叉現象。 檢驗括號匹配的方法,就是對給定的字串依次檢驗:若是左括號,入棧;若是又括號,出棧一個左括號判斷是否與之匹配;是其他字元,不檢驗。檢驗到字串
Java 用棧解決括號匹配問題
在南陽理工ACM看到的一道題 問題描述:問題描述 : 輸入一個字串 裡面只含有 [ , ] , ( , ) 四種括號 ; 現要求判斷這個字串 是否滿足括號匹配 如 ([])() 是匹配的 ([)]是不匹配的 先貼程式碼 public void ch
順序棧實現括號匹配
2018-11-10-21:38:07 1 /********************************************************* 2 順序棧實現括號匹配。 3 main函式操作: 4 1.在這裡main函式內部主要以解決括
C語言實現順序棧的括號匹配
//順序棧的使用舉例:括號的匹配 #include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE
順序棧 & 順序棧的括號匹配演算法
棧空時 S->top = -1 新增第一個元素過程: S->data[s->top++] = value; #include <stdio.h> #include <stdlib.h> #define MAXL
C++使用棧解決括號匹配問題
#include<iostream> #include<stack> #include<string> using namespace std; bool Jud
陣列模擬棧解決括號匹配
這三道題其實是一個型別,難度依次遞增,所以博主直接講最後一道,前面兩道直接給程式碼。 表示式括號匹配(stack) 時間限制: 1000 ms 記憶體限制: 65536 KB 提交數: 133 通過數: 90 【題目描述】
棧解決括號匹配
package coding; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Scanner; class Stack{ char[
java版資料結構與演算法—棧(判斷括號是否匹配)
/** * 括號是否匹配 {} () [] */ class IsMatch { private char arr[]; private int maxSize; private int top; public IsMatch(int size){
資料結構用順序棧實現R進位制轉換
#include<stdio.h> #define MAXSIZE 500 typedef struct{ int *base; int *top; int stacksize; }Sqstack; int Initstack(Sqstack &S)
用順序棧建立雙棧結構
雙棧結構,即兩端都可以入棧,但無論從哪一端,仍遵從LIFO include define MAXSIZE 1024 typedef struct dStack{ elemtype data[MAXSIZE]; int to
C語言中利用棧檢測括號是否匹配
檢測括號是否匹配的演算法中,棧的特性是最符合括號特點的。棧的先進後出將括號的匹配正好完美實現。 思想: 從字串開頭向後逐個檢測,檢測到除括號外的元素就跳過。檢測到左括號時,就進行入棧操作,繼續向後檢測
通過棧實現括號的匹配
我們通過順序表建立一個棧 如果我們需要實現一組括號的匹配,我們首先必須知道這個括號陣列當中所有的括號符號。 常見的括號符號也就 ‘[]’ ‘{}’ ‘()’,還有的一些奇奇怪怪的括號就不說了啊。 我們首先需要按思維邏輯思考,需要完成括號的左右搭配,即相同型別的括
用順序棧實現十進制向二進制轉化
clu 進制 () fin maxsize malloc all truct size #include<stdio.h> #include<stdlib.h> #define maxsize 30 typedef int datatype; ty
Python 用棧判斷括號匹配
#!/usr/bin/python # -*- coding: UTF-8 -*- from pythonds.basic.stack import Stack def parChecker(symbolString): s = Stack() balanced = T
資料結構:用連結串列實現棧的括號匹配
完成以下程式,並在右邊空白處,對錯誤進行修改,並記錄下程式執行結果: 1. 編寫演算法,判斷一表達式中的括號是否配對,包括大、中、小三類括號。 連結串列版本: #include <cstdio> #include <cmath> #inclu
Java實現用棧判斷括號匹配問題
Stack的用例Parentheses,輸入一串括號用棧判斷其中的括號是否匹配,例如[()]{()}程式列印true,對於[](則列印false。 思路: 遇到左括號入棧,遇到右括號時先檢查棧是否為空,若空則返回false,若不空則彈出棧頂元素看與右括號是否