首页 > 其他 > 详细

栈的应用之行编辑程序

时间:2016-04-05 00:36:04      阅读:234      评论:0      收藏:0      [点我收藏+]

Description

利用栈编写简单的行编辑程序:接受用户从终端输入的程序或数据,在输入过程中,允许用户输入出差错,并在发现有误时可以及时更正。例如:当用户发现刚刚键入的一个字符是错的时,可以补进一个退格符“#”,以表示前一个字符无效;如果发现当前键入的行内差错较多或难以补救,则可以键入一个退行符“@”,以表示当前行中的字符均无效。例如:假设从终端接受了这样两行字符: whli##ilr#e (s#*s) outcha@putchar(*s=#++); 则实际有效的是下列两行: while (*s) putchar(*s++); 本题目给出部分函数,要求将行编辑函数补充完整,并完成整个程序。

思路:判断字符是否为‘#’,是则删除栈顶元素,否则将字符压进栈;判断字符是否为‘@’,是则清空栈,否则将字符压进栈;

代码演示:

void LineEdit()
 { 
   SqStack s;
   char ch,c;
   int n,i;
   InitStack(s);
   scanf("%d",&n);
   ch=getchar();
   for(i=1;i<=n;i++)
   { ch=getchar();
     while(ch!=\n)
    {
       switch(ch)
       {
         case #:Pop(s,c);
                  break; // 仅当栈非空时退栈
         case @:ClearStack(s);
                  break; // 重置s为空栈
         default :Push(s,ch); // 有效字符进栈
       }
       ch=getchar(); // 从终端接收下一个字符
     }
     StackTraverse(s,visit); // 将从栈底到栈顶的栈内字符输出
    ClearStack(s); // 重置s为空栈
    }
   DestroyStack(s);
 }

 

栈的应用之行编辑程序

原文:http://www.cnblogs.com/LizG192/p/5353364.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!