资源简介
该代码简明易懂,能实现括号嵌套,并包含栈和队列所有基本操作集,用处较大。
代码片段和文件信息
//该程序思路需要两个栈和一个队列,可以解决括号嵌套问题。
#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
- 上一篇:Seam Carving的C++实现代码
- 下一篇:单像空间后方交会程序
评论
共有 条评论