资源简介

该代码简明易懂,能实现括号嵌套,并包含栈和队列所有基本操作集,用处较大。

资源截图

代码片段和文件信息

//该程序思路需要两个栈和一个队列,可以解决括号嵌套问题。
#include“c1.h“//此头文件及下面四个包含所有需要的函数,并有栈和队列所有基本操作集。
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;                                 //输入魔王语言。
int len=strlen(str);                      //得到长度。
SqStack S1S2;
InitStack(S1);
InitStack(S2);
for(i=len-1;i>=0;i--)                    //从右到左依次进栈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‘);
EnQueue(Q‘e‘);
}
else if(e==‘B‘)
{
EnQueue(Q‘t‘);
EnQueue(Q‘s‘);
EnQueue(Q‘a‘);
EnQueue(Q‘e‘);
EnQueue(Q‘d‘);
EnQueue(Q‘s‘);
EnQueue(Q‘a‘);
EnQueue(Q‘e‘);
}
else
EnQueue(Qe);
}
else if(e==‘(‘)                     //遇左括号开始处理,此过程一直进行处理到与该左括号对应的右括号,所以这里e不可能为右括号。
{
flag++;
Push(S2e);
Pop(S1e);
while(flag!=0)                  //如有括号嵌套情况,则flag++,当flag为0时,结束处理。
{
if(e==‘(‘)
{
flag++;
Push(S2e);
}
else if(e==‘)‘)               //遇到第一个右括号开始处理,将这个右括号之前到最后一个左括号的内容放入ch1。
{
flag--;
Pop(S2e);
j=0;
while(e!=‘(‘)
{
ch1[j++]=e;
Pop(S2e);
}
for(i=0;i<=j*2-2;i++)   //对ch1处理得到ch2,ch2即为括号中内容的所需处理结果。
{
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是对遇到的第一个左括号到与之对应的右括号之间全部内容的处理,但顺序是反的,所以需要压回s1再进队列。
{
Pop(S2e);
Push(S1e);
}
}
}
while(!QueueEmpty(Q))    //从队列中输出结果
{
DeQueue(Qe);
cout< }
cout<}




 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1814  2013-03-19 13:20  魔王语言\BO3-1.CPP
     文件        2050  2002-07-30 09:17  魔王语言\BO3-2.CPP
     文件         658  2013-11-18 21:15  魔王语言\c1.h
     文件         313  2001-08-13 23:42  魔王语言\C3-1.H
     文件         194  2001-08-17 10:53  魔王语言\C3-2.H
     目录           0  2013-11-26 01:27  魔王语言\Debug\
     文件      148480  2013-11-26 01:28  魔王语言\Debug\vc60.idb
     文件      118784  2013-11-26 01:27  魔王语言\Debug\vc60.pdb
     文件      287744  2013-11-18 21:26  魔王语言\Debug\魔王语言.bsc
     文件      532535  2013-11-26 01:27  魔王语言\Debug\魔王语言.exe
     文件      768044  2013-11-26 01:27  魔王语言\Debug\魔王语言.ilk
     文件       92948  2013-11-26 01:27  魔王语言\Debug\魔王语言.obj
     文件     2034256  2013-11-25 00:11  魔王语言\Debug\魔王语言.pch
     文件     1090560  2013-11-26 01:27  魔王语言\Debug\魔王语言.pdb
     文件           0  2013-11-18 21:26  魔王语言\Debug\魔王语言.sbr
     文件        2188  2013-12-10 23:43  魔王语言\魔王语言.cpp
     文件        3427  2013-11-26 01:04  魔王语言\魔王语言.dsp
     文件         524  2013-11-26 01:29  魔王语言\魔王语言.dsw
     文件       50176  2013-11-26 01:29  魔王语言\魔王语言.ncb
     文件       48640  2013-11-26 01:29  魔王语言\魔王语言.opt
     文件        1137  2013-11-26 01:27  魔王语言\魔王语言.plg

评论

共有 条评论

相关资源