資源簡(jiǎn)介
該代碼簡(jiǎn)明易懂,能實(shí)現(xiàn)括號(hào)嵌套,并包含棧和隊(duì)列所有基本操作集,用處較大。

代碼片段和文件信息
//該程序思路需要兩個(gè)棧和一個(gè)隊(duì)列,可以解決括號(hào)嵌套問(wèn)題。
#include“c1.h“//此頭文件及下面四個(gè)包含所有需要的函數(shù),并有棧和隊(duì)列所有基本操作集。
typedef?char?QElemType;
typedef?char?SElemType;
#include“c3-1.h“
#include“c3-2.h“
#include“bo3-1.cpp“
#include“bo3-2.cpp“
using?namespace?std;
void?main()
{
int?ijflag;
flag=0;
char?str[100]ch1[100]ch2[100]e;
cin>>str;?????????????????????????????????//輸入魔王語(yǔ)言。
int?len=strlen(str);??????????????????????//得到長(zhǎng)度。
SqStack?S1S2;
InitStack(S1);
InitStack(S2);
for(i=len-1;i>=0;i--)????????????????????//從右到左依次進(jìn)棧s1。
Push(S1str[i]);
linkQueue?Q;
InitQueue(Q);
while(!StackEmpty(S1))
{
Pop(S1e);
if(isalpha(e))
{
if(e==‘A‘)
{
EnQueue(Q‘s‘);
EnQueue(Q‘a(chǎn)‘);
EnQueue(Q‘e‘);
}
else?if(e==‘B‘)
{
EnQueue(Q‘t‘);
EnQueue(Q‘s‘);
EnQueue(Q‘a(chǎn)‘);
EnQueue(Q‘e‘);
EnQueue(Q‘d‘);
EnQueue(Q‘s‘);
EnQueue(Q‘a(chǎn)‘);
EnQueue(Q‘e‘);
}
else
EnQueue(Qe);
}
else?if(e==‘(‘)?????????????????????//遇左括號(hào)開(kāi)始處理,此過(guò)程一直進(jìn)行處理到與該左括號(hào)對(duì)應(yīng)的右括號(hào),所以這里e不可能為右括號(hào)。
{
flag++;
Push(S2e);
Pop(S1e);
while(flag!=0)??????????????????//如有括號(hào)嵌套情況,則flag++,當(dāng)flag為0時(shí),結(jié)束處理。
{
if(e==‘(‘)
{
flag++;
Push(S2e);
}
else?if(e==‘)‘)???????????????//遇到第一個(gè)右括號(hào)開(kāi)始處理,將這個(gè)右括號(hào)之前到最后一個(gè)左括號(hào)的內(nèi)容放入ch1。
{
flag--;
Pop(S2e);
j=0;
while(e!=‘(‘)
{
ch1[j++]=e;
Pop(S2e);
}
for(i=0;i<=j*2-2;i++)???//對(duì)ch1處理得到ch2,ch2即為括號(hào)中內(nèi)容的所需處理結(jié)果。
{
if(i%2==0)
ch2[i]=ch1[j-1];
else?
ch2[i]=ch1[i/2];
Push(S2ch2[i]);
}
}
else
{
Push(S2e);
}
Pop(S1e);
}
while(!StackEmpty(S2))??//在s2是對(duì)遇到的第一個(gè)左括號(hào)到與之對(duì)應(yīng)的右括號(hào)之間全部?jī)?nèi)容的處理,但順序是反的,所以需要壓回s1再進(jìn)隊(duì)列。
{
Pop(S2e);
Push(S1e);
}
}
}
while(!QueueEmpty(Q))????//從隊(duì)列中輸出結(jié)果
{
DeQueue(Qe);
cout< }
cout< }
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件????????1814??2013-03-19?13:20??魔王語(yǔ)言\BO3-1.CPP
?????文件????????2050??2002-07-30?09:17??魔王語(yǔ)言\BO3-2.CPP
?????文件?????????658??2013-11-18?21:15??魔王語(yǔ)言\c1.h
?????文件?????????313??2001-08-13?23:42??魔王語(yǔ)言\C3-1.H
?????文件?????????194??2001-08-17?10:53??魔王語(yǔ)言\C3-2.H
?????目錄???????????0??2013-11-26?01:27??魔王語(yǔ)言\Debug\
?????文件??????148480??2013-11-26?01:28??魔王語(yǔ)言\Debug\vc60.idb
?????文件??????118784??2013-11-26?01:27??魔王語(yǔ)言\Debug\vc60.pdb
?????文件??????287744??2013-11-18?21:26??魔王語(yǔ)言\Debug\魔王語(yǔ)言.bsc
?????文件??????532535??2013-11-26?01:27??魔王語(yǔ)言\Debug\魔王語(yǔ)言.exe
?????文件??????768044??2013-11-26?01:27??魔王語(yǔ)言\Debug\魔王語(yǔ)言.ilk
?????文件???????92948??2013-11-26?01:27??魔王語(yǔ)言\Debug\魔王語(yǔ)言.obj
?????文件?????2034256??2013-11-25?00:11??魔王語(yǔ)言\Debug\魔王語(yǔ)言.pch
?????文件?????1090560??2013-11-26?01:27??魔王語(yǔ)言\Debug\魔王語(yǔ)言.pdb
?????文件???????????0??2013-11-18?21:26??魔王語(yǔ)言\Debug\魔王語(yǔ)言.sbr
?????文件????????2188??2013-12-10?23:43??魔王語(yǔ)言\魔王語(yǔ)言.cpp
?????文件????????3427??2013-11-26?01:04??魔王語(yǔ)言\魔王語(yǔ)言.dsp
?????文件?????????524??2013-11-26?01:29??魔王語(yǔ)言\魔王語(yǔ)言.dsw
?????文件???????50176??2013-11-26?01:29??魔王語(yǔ)言\魔王語(yǔ)言.ncb
?????文件???????48640??2013-11-26?01:29??魔王語(yǔ)言\魔王語(yǔ)言.opt
?????文件????????1137??2013-11-26?01:27??魔王語(yǔ)言\魔王語(yǔ)言.plg
評(píng)論
共有 條評(píng)論