括号匹配思路:
1、遇到左边的括号 进栈 ,
2、遇到右边的括号获取原来栈 中栈顶元素,与刚遇到的值进行匹配,匹配成功则弹栈;
重复上面的两部分
数据结构的算法如何描述(未查资料写的):
bool isValid(char * s){
InitStack(&S);
char *p = "String";" s == p"
"怎么描述左括号? = left 输入的括号 为 n"
while(*p){
if( n = left){
push(&S,left);
}else{
if(getTop() == n.left) "这种模式需不需要判空"
pop(S,left);
else(
return error;
)
}
p = p+1;
}
return OK;
邓俊辉版 算法描述
算法中 ({ }) [ ]分别等,特例写入算法中;
行编辑程序
描述:接收用户从终端输入的程序或者数据,并存入用户的数据区,若没接收一个字符就存入用户的数据区 的做法显然不是最恰当的,较好的做法是,设立缓冲区 :接收用户的一行数据,而后在逐行的存入,
发现错误可以及时的更正;删除前面一个 或者清空一个栈。
void LineEdit(){
InitStack(&S);
ch = getChar();//重终端获取第一个字符
while(ch!= EOF){
while(ch != EOF &&ch != '\n'){
switch(ch){
case:'#':Pop(&S,&e);
case:'@' x=clearStaeck(&S);
default:Push(&S ,e)
}
ch=getChar();//从终端获取下一个字符;
}
将栈中的数据转入 传送至 调用过程的数据区;
}
ClearStack(S);
if(ch!=EOF){
ch = getchar();//获取另外一行的第一个字符
}
DestoryStack(S);
}
网友评论