<pre class="cpp" name="code">void match(Stack *st, char *str)//括号匹配;;
{
int i = 0, flag = 0;
ElemType ch;
while(str[i] != '\0')
{
switch(str[i]) //用switch case语句对括号类型进行选择;;
{
case '(':
Push(st,str[i]); //左括号入栈,下面相同;;
break;
case '[':
Push(st,str[i]);
break;
case ')':
Pop(st,&ch);
if(ch!='(') //此处做了一个flag开关;; 当遇到匹配的时候出栈;;
flag = 1;
break;
case ']':
Pop(st,&ch);
if(ch!='[')
flag = 1;//同上;;
default :
break;
}
if(flag)
break;
i++;
}
if(!flag && IsEmpty(st))//主要判断的是flag flag为0 时表示匹配成功 此时栈为空
{
cout<<"match"<<endl;
}
else
{
cout<<"not match"<<endl;
}
}
<pre class="cpp" name="code">void LineEdit(Stack *st)// 行编辑程序 #:退格 @:清除一行{char ch, *tmp;InitStack(st);cout<<"请输入一行,#:退格 @:清除一行"<<endl;ch =getchar();while(ch != EOF){while(ch != EOF && ch != '\n'){switch(ch){case '#':Pop(st); break;case '@':clear(st); break;default :Push(st,ch);break;}ch = getchar();}tmp = st->base; //指针tmp指向栈底while(*tmp != st->base[st->top])// 将数据存入缓冲区;;{cout<<*tmp ;tmp++;}clear(st); //全部存入缓冲区指后将栈清空;;if(ch != EOF) //执行下一次操作;;{cout<<"请输入一行 #退格,@清除一行"<<endl;ch = getchar();}}destroy(st); //程序结束时摧毁栈}
bool Bin_Stack(Stack *st, ElemType i)//二进制转换;;
{
int x = 0;
while(i!=0)
{
x = i%2;
i = i/2;
Push(st, x);
}
return true;
}