真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言括號(hào)匹配函數(shù) c語言括號(hào)匹配用數(shù)組

求用C語言做簡(jiǎn)單的括號(hào)匹配程序 ?

頭文件:(另存為SeqStack.h)

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出盂縣免費(fèi)做網(wǎng)站回饋大家。

typedef struct

{

DataType stack[MaxStackSize];

int top;

} SeqStack;

void StackInitiate(SeqStack *S) /*初始化順序堆棧S*/

{

S-top = 0; /*定義初始棧頂下標(biāo)值*/

}

int StackNotEmpty(SeqStack S)

/*判順序堆棧S非空否,非空則返回1,否則返回0*/

{

if(S.top = 0) return 0;

else return 1;

}

int StackPush(SeqStack *S, DataType x)

/*把數(shù)據(jù)元素值x壓入順序堆棧S,入棧成功則返回1,否則返回0 */

{

if(S-top = MaxStackSize)

{

printf("堆棧已滿無法插入! \n");

return 0;

}

else

{

S-stack[S-top] = x;

S-top ++;

return 1;

}

}

int StackPop(SeqStack *S, DataType *d)

/*彈出順序堆棧S的棧頂數(shù)據(jù)元素值到參數(shù)d ,出棧成功則返回1,否則返回0*/

{

if(S-top = 0)

{

printf("堆棧已空無數(shù)據(jù)元素出棧! \n");

return 0;

}

else

{

S-top --;

*d = S-stack[S-top];

return 1;

}

}

int StackTop(SeqStack S, DataType *d)

/*取順序堆棧S的當(dāng)前棧頂數(shù)據(jù)元素值到參數(shù)d ,成功則返回1,否則返回0*/

{

if(S.top = 0)

{

printf("堆棧已空! \n");

return 0;

}

else

{

*d = S.stack[S.top - 1];

return 1;

}

}

括號(hào)問題

#include string.h

#include stdio.h

#include stdlib.h

#define MaxStackSize 100

typedef char DataType;

#include "SeqStack.h"

void ExpIsCorrect(char exp[], int n)

//判斷有n個(gè)字符的字符串exp左右括號(hào)是否配對(duì)正確

{

SeqStack myStack; //定義鏈?zhǔn)蕉褩?/p>

int i;

char c;

StackInitiate(myStack);

for(i = 0; i n; i++)

{

if((exp[i] == '(') || (exp[i] == '[') || (exp[i] == '{'))

StackPush(myStack, exp[i]); //入棧

else if(exp[i] == ')' StackNotEmpty(myStack)

StackTop(myStack, c) c == '(')

StackPop(myStack, c); //出棧

else if(exp[i] == ')' StackNotEmpty(myStack)

StackTop(myStack, c) c != '(')

{

printf("左右括號(hào)配對(duì)次序不正確!\n");

return;

}

else if(exp[i] == ']' StackNotEmpty(myStack)

StackTop(myStack, c) c == '[')

StackPop(myStack, c); //出棧

else if(exp[i] == ']' StackNotEmpty(myStack)

StackTop(myStack, c) c != '[')

{

printf("左右括號(hào)配對(duì)次序不正確!\n");

return;

}

else if(exp[i] == '}' StackNotEmpty(myStack)

StackTop(myStack, c) c == '{')

StackPop(myStack, c); //出棧

else if(exp[i] == '}' StackNotEmpty(myStack)

StackTop(myStack, c) c != '{')

{

printf("左右括號(hào)配對(duì)次序不正確!\n");

return;

}

else if(((exp[i] == ')') || (exp[i] == ']') || (exp[i] == '}'))

!StackNotEmpty(myStack))

{

printf("右括號(hào)多于左括號(hào)!\n");

return;

}

}

if(StackNotEmpty(myStack))

printf("左括號(hào)多于右括號(hào)!\n");

else

printf("左右括號(hào)匹配正確!\n");

}

void main(void)

{

char a[] = "(())abc{[)(]}"; //測(cè)試?yán)?。左右括號(hào)配對(duì)次序不正確

char b[] = "(()))abc{[]}"; //測(cè)試?yán)?。右括號(hào)多于左括號(hào)

char c[] = "(()()abc{[]}"; //測(cè)試?yán)?。左括號(hào)多于右括號(hào)

char d[] = "(())abc{[]}"; //測(cè)試?yán)?。左右括號(hào)匹配正確

int n1 = strlen(a);

int n2 = strlen(b);

int n3 = strlen(c);

int n4 = strlen(d);

ExpIsCorrect(a, n1);

ExpIsCorrect(b, n2);

ExpIsCorrect(c, n3);

ExpIsCorrect(d, n4);

}

二者放于同一目錄下即可

c語言表達(dá)式求值括號(hào)匹配

#includestdio.h

#includestring.h

#includemalloc.h

#includestdlib.h

#define?MaxSize?50

typedef?struct

{

float?data[MaxSize];

int?top;

}OpStack;

typedef?struct

{

char?data[MaxSize];

int?top;

}SeqStack;

void?InitStack(SeqStack?*S);//初始化棧

int?StackEmpty(SeqStack?S);//判斷棧是否為空

int?PushStack(SeqStack?*S,char?e);//進(jìn)棧

int?PopStack(SeqStack?*S,char?*e);//刪除棧頂元素

int?GetTop(SeqStack?S,char?*e);//取棧頂元素

void?TranslateExpress(char?s1[],char?s2[]);//將中綴表達(dá)式轉(zhuǎn)化為后綴表達(dá)式

float?ComputeExpress(char?s[]);//計(jì)算后綴表達(dá)式的值

void?main()

{

char?a[MaxSize],b[MaxSize];

float?f;

printf("請(qǐng)輸入一個(gè)算術(shù)表達(dá)式:\n");

gets(a);

printf("中綴表達(dá)式為:%s\n",a);

TranslateExpress(a,b);

printf("后綴表達(dá)式為:%s\n",b);

f=ComputeExpress(b);

printf("計(jì)算結(jié)果:%f\n",f);

}

void?InitStack(SeqStack?*S)//初始化棧

{

S-top=0;

}

int?StackEmpty(SeqStack?S)//判斷棧是否為空

{

if(S.top?==0)

return?1;

else

return?0;

}

int?PushStack(SeqStack?*S,char?e)//進(jìn)棧

{

if(S-top=MaxSize)

{

printf("棧已滿,不能進(jìn)棧!");

return?0;

}

else

{

S-data[S-top]=e;

S-top++;

return?1;

}

}

int?PopStack(SeqStack?*S,char?*e)//刪除棧頂元素

{

if(S-top==0)

{

printf("棧已空\(chéng)n");

return?0;

}

else

{

S-top--;

*e=S-data[S-top];

return?1;

}

}

int?GetTop(SeqStack?S,char?*e)//取棧頂元素

{

if(S.top=0)

{

printf("棧已空");

return?0;

}

else

{

*e=S.data[S.top-1];

return?1;

}

}

void?TranslateExpress(char?str[],char?exp[])//把中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式

{

SeqStack?S;

char?ch;

char?e;

int?i=0,j=0;

InitStack(S);

ch=str[i];

i++;

while(ch!='\0')???//依次掃描中綴表達(dá)式

{

switch(ch)

{

case'(':

PushStack(S,ch);

break;

case')':

while(GetTop(S,e)e!='(')

{

PopStack(S,e);

exp[j]=e;

j++;

}

PopStack(S,e);

break;

case'+':

case'-':

while(!StackEmpty(S)GetTop(S,e)e!='(')

{

PopStack(S,e);

exp[j]=e;

j++;

}

PushStack(S,ch);

break;

case'*':

case'/':

while(!StackEmpty(S)GetTop(S,e)e=='/'||e=='*')

{

PopStack(S,e);

exp[j]=e;

j++;

}

PushStack(S,ch);

break;????//是空格就忽略

case'?':

break;

default:

while(ch='0'ch='9')

{

exp[j]=ch;

j++;

ch=str[i];

i++;

}

i--;

exp[j]='?';

j++;

}

ch=str[i];

i++;

}

while(!StackEmpty(S))???//將棧中剩余運(yùn)算符出棧

{

PopStack(S,e);

exp[j]=e;

j++;

}

exp[j]='\0';

}

float?ComputeExpress(char?a[])//計(jì)算后綴表達(dá)式的值

{

OpStack?S;

int?i=0;

float?x1,x2,value;

float?result;

S.top=-1;

while(a[i]!='\0')?????//依次掃描后綴表達(dá)式

{

if(a[i]!='?'a[i]='0'a[i]='9')//如果是數(shù)字

{

value=0;

while(a[i]!='?')????//如果不是空格

{

value=10*value+a[i]-'0';

i++;

}

S.top++;

S.data[S.top]=value;???//處理后進(jìn)棧

}

else??????????//如果是運(yùn)算符

{

switch(a[i])

{

case'+':

x1=S.data[S.top];

S.top--;

x2=S.data[S.top];

S.top--;

result=x1+x2;

S.top++;

S.data[S.top]=result;

break;

case'-':

x1=S.data[S.top];

S.top--;

x2=S.data[S.top];

S.top--;

result=x2-x1;

S.top++;

S.data[S.top]=result;

break;

case'*':

x1=S.data[S.top];

S.top--;

x2=S.data[S.top];

S.top--;

result=x1*x2;

S.top++;

S.data[S.top]=result;

break;

case'/':

x1=S.data[S.top];

S.top--;

x2=S.data[S.top];

S.top--;

result=x2/x1;

S.top++;

S.data[S.top]=result;

break;

}

i++;

}

}

if(!S.top!=-1)????//如果棧不空,將結(jié)果出棧并返回

{

result=S.data[S.top];

S.top--;

if(S.top==-1)

return?result;

else

{

printf("表達(dá)式錯(cuò)誤");

exit(-1);

}

}

return?0;

}

c語言的括號(hào)匹配問題

#include stdio.h

#include stdlib.h

int main()

{

int i,count;

char ch[10001],ch1[10001];

while(gets(ch)!=NULL)

{

??count=-1;

? for(i=0;ch[i]!='\0';i++)

? {

? ? ? if(ch[i]=='('||ch[i]=='['||ch[i]==''||ch[i]=='{')

? ? ? {

? ? ? ? ? ch1[++count]=ch[i];

? ? ? }

? ? ? else

? ? ? {

? ? ? ? ? if(ch[i]-ch1[count]3)

? ? ? ? ? {

? ? ? ? ? ? ? count--;

? ? ? ? ? }

? ? ? ? ? else

? ? ? ? ? {

? ? ? ? ? ? ? break;

? ? ? ? ? }

? ? ? }

? }

? if(count==-1)

? ? ? printf("YES\n");

? else

? ? ? printf("NO\n");

}

return 0;

}


文章名稱:c語言括號(hào)匹配函數(shù) c語言括號(hào)匹配用數(shù)組
路徑分享:http://weahome.cn/article/doshhdh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部