栈的应用

来源:互联网 发布:淘宝达人5篇帖子 编辑:程序博客网 时间:2024/06/15 23:34

数制转换

void conversion(){   //对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数   InitStack(S);   //构造空栈   scanf("%d",N);   while(N){     Push(S,N%8);     N=N/8;}while(!StackEmpty(s)){     Pop(S,e);     printf("%d",e);     }  }## 行编辑程序 ## //一个简单的行编辑程序的功能是:接受用户从终端输入的程序或数据,并存入用户的数据区。为避免用户出错,较好的做法设立一个输入缓冲区,用以接受用户输入的一行字符,然后逐行存入用户数据区。设这个输入缓冲区为一个栈结构,每当从终端接受一个字符之后,先做辨别:如果它既不是退格符也不是退行符,则将该字符压入栈顶;如果是一个退格符,则从栈顶删去一个字符;如果它是一个退行符,则将字符栈清为空栈void LinEdit(){   //利用字符栈,从终端接收一行并传送至调用过程的数据区。   InitStack(S);   //构造空栈S   ch=getchar();   //从终端接收第一个字符   while(ch!=EOF){//EOF为全文结束符      while(ch!=EOF&&ch!='\n'){         switch(ch){            case'#':Pop(S,c);   break;//仅当栈非空时退栈            case'@':ClearStack(S);  break;//重置S为空栈            default:Push(S,ch);  break;//有效字符进栈,未考虑栈满情形            }            ch=getchar();  //从终端接收下一个字符           }           将从栈底到栈顶的栈内字符传送至调用过程的数据区;           ClearStack(S);  //重置S为空栈           if(ch!=EOF) ch=getchar();           }           DestroyStack(S);         }//LineEdit
0 0
原创粉丝点击