導航:首頁 > 源碼編譯 > 括弧匹配演算法

括弧匹配演算法

發布時間:2022-01-12 11:26:51

❶ 用C語言寫出三種括弧匹配的演算法(小括弧,中括弧,花括弧)

❷ 括弧匹配 基本演算法

用棧的數據結構

先讀入一個括弧,如果為左括弧,入棧,否則,出錯退出
繼續讀入括弧,如果是右括弧,檢查棧,如果非空,出棧(因為不把右括弧入棧,所以棧裡面都是左括弧),如果空,出錯退出

直到讀完處理完最後一個括弧,如果這個時候棧為空,那麼成功返回true,否則返回false

❸ 數據結構括弧匹配的演算法問題

return0 就是不匹配,return 1 就是匹配,最後判斷棧是不是空的,棧如果是空的,說明匹配了,返回 1 ,如果不是空的,說明還有左括弧,匹配失敗

❹ 求多項式中括弧匹配演算法~~(有關數據結構,C++實現)

括弧可以用棧來匹配啊, 數據結構中的運算符優先法就是用棧實現的,
左右括弧都是運算符,規定(優先順序最底,要入棧到運算符棧, 其他運算符優先都要高於( 但低於),其他運算符之間的優先關系暫且忽略不說,也就是當讀取到) 的時候, 括弧內運算一定會結束並得出一個結果進入到操作數棧(由於 ) 的優先順序比其他所有運算符都高,其他運算符要出棧運算,並且把結果入到操作數棧),然後就是檢查操作數棧棧頂是否是左括弧,如果是在左括弧出棧,這樣左右括弧就一起消掉,如果不是,則報錯,你要檢查你的運算符優先表的定義,因為根據定義,到讀取到右括弧的時候,括弧內的運算會結束並得出結果, 空括弧不影響計算, 只是沒有操作數入棧而已,而且可以嵌套括弧 , 規定好了優先順序,可以實現多種不同優先順序的括弧的混合運算

❺ 括弧配對的演算法

void peii(void)前部有個
scanf("%c",&data);
這里data獲取了一個字元,但是用來確定的<CR>還在IO流中,所以後面第一個
scanf("%c",&data);
直接得到了<CR>,而不需要等待你的輸入,接著執行第二個,IO流中已經沒有字元了,所以等待你的輸入.

這就是為什麼你的一條語句的話直接跳過,二條語句的話入等待你的輸入.

❻ 數據結構 括弧匹配演算法

樓上說的是一個原因,不過去掉!StackEmpty(S)後問題依舊。
你的原因主要是這里:
case ')':{Pop(S,e);
if(e!='(') flag=1; break;}

應該先判斷,再出棧。不能先出棧再判斷。

❼ 數據結構棧應用括弧匹配演算法

演算法如下:

從左開始向右掃描該表達式,
1、如遇左括弧(不論哪一種),將該左括弧入棧;
2、如是右括弧,如棧為空則返回出錯信息,不空就檢查其是否與棧頂左括弧是否配對,如是則棧頂元素出棧後繼續掃描(轉1 ),否則,返回出錯信息(出錯類型:右括弧先出現,或左右括弧不匹配,出錯位置);
3、如是其它字元,直接跳過,繼續掃描,如表達式未完則轉1;表達式結束轉4。
4、如棧空,顯示「匹配正確!」,否則顯示「缺失右括弧!」。

❽ 括弧匹配

//這是寫的源碼,你自己看看吧,我這邊調試過了,運行正常
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define STACK_SIZE 100
#define MAX_STR_SIZE 100

typedef struct
{
char s[STACK_SIZE];
int top;
}Stack;

//輸入要判別的字元串
void inputStr(char str[])
{
char ch;
int i=0;
printf("請輸入串(以'#'結束):");
while(((ch=getchar())!='#')&&i<MAX_STR_SIZE-1)
{
str[i]=ch;
i++;
}
str[i]='#';
}
//初始化棧
Stack *initStack(Stack *stack)
{ stack=(Stack *)malloc(sizeof(Stack));
stack->top=-1;
return stack;
}
//判斷棧是否為空
int isStackEmpty(Stack *stack)
{
if(stack->top==-1)
return 1;
else
return 0;
}
char getElem(Stack *stack)
{
return stack->s[stack->top];
}
void push(Stack *stack,char ap)
{
stack->top++;
stack->s[stack->top]=ap;
}
void pop(Stack *stack)
{
stack->top--;
}
//判斷
void pipei(char str[])
{
Stack *stack;
char c;
int i=0;

stack=initStack(stack);

while(str[i]!='#')
{
if(str[i]>='A'&&str[i]<='Z')
{
if(!isStackEmpty(stack))
{
c=getElem(stack);
if((c+str[i]==155)&&(c<str[i]))
pop(stack);
else
push(stack,str[i]);
}
else push(stack,str[i]);
}
i++;
}
if(isStackEmpty(stack))
printf("\n該串是一個匹配表達式!\n");
else
printf("\n該串不是一個匹配表達式!\n");

}
//串輸出
void outputStr(char str[])
{

}
main()
{

char str[MAX_STR_SIZE];
inputStr(str);
// outputStr(str);
pipei(str);
}

❾ C#括弧匹配問題演算法

constCharRIGHT='}';
constCharLEFT='{';
staticvoidMain(string[]args)
{
Queue<Char>queue=newQueue<Char>();
StringtargetValue="sd{{}";
BooleanisValid=true;

foreach(CharitemintargetValue)
{
if(item.Equals(LEFT))queue.Enqueue(item);

if(queue.Count>0&&!item.Equals(RIGHT)&&!item.Equals(LEFT)){
isValid=false;
break;
}

if(queue.Count>0&&item.Equals(RIGHT))queue.Dequeue();
}

if(isValid&&queue.Count==0)Console.WriteLine("匹配");
elseConsole.WriteLine("不匹配");

Console.ReadKey();
}

閱讀全文

與括弧匹配演算法相關的資料

熱點內容
手機時間如何校正到伺服器 瀏覽:81
創造與魔法瞬移源碼百度 瀏覽:882
反射優化java 瀏覽:874
硬體加密播放盒子 瀏覽:923
xp點擊文件夾選項沒反應 瀏覽:537
蘋果不顯示桌面的app怎麼刪除 瀏覽:864
安卓手機怎麼換國際服 瀏覽:415
神獸領域安卓怎麼下載 瀏覽:250
單片機交通燈ad原理圖 瀏覽:413
多功能解壓磁鐵筆 瀏覽:80
少兒編程火箭升空 瀏覽:401
蘭斯10游戲解壓碼 瀏覽:42
手機proxy伺服器地址 瀏覽:449
吉他清音壓縮 瀏覽:301
簡歷模板程序員 瀏覽:882
螺桿壓縮機虛標型號 瀏覽:953
idea開發項目伺服器ip地址 瀏覽:125
串口伺服器出現亂碼怎麼解決 瀏覽:950
命令按鈕的default 瀏覽:161
戰網如何登錄其他伺服器 瀏覽:990