行编辑程序(栈和队列)

题目描述

一个简单的行编辑程序的功能是:接受用户从终端输入的程序或数据,并存入用户的数据区。答应用户输入出错时可以及时更正。可以约定#为退格符,以表示前一个字符无效,@为退行符,表示当前行所有字符均无效。
输出更正后的程序。

输入

whli##ilr#e(s#*s)

输出

while(*s)

样例输入 Copy

outcha@putchar(*s=#++)

样例输出 Copy

putchar(*s++)

分析:

本题的话也是简单的队列应用。通过不断的改遍Q.rear的值达到目的。要注意的是有可能会是Q.rear的值小于0,如果小于0,则要改成0。小于0的情况为第一个遇到#。

#include"stdio.h"
#include"string.h"
typedef struct {
 char data[1000];
 int front;
 int rear;
}SqQueue;
SqQueue Q;
int main()
{
    char a[100];
    int i,j,k,l;
    while(~scanf("%s",a))
    {
        Q.front=0;
        Q.rear=0;
        l=strlen(a);
        i=0;
        while(i<l)
        {
            Q.data[Q.rear++]=a[i];
            if(a[i]=='#')
                Q.rear=Q.rear-2;
            if(Q.rear<0)
                Q.rear=0;
            if(a[i]=='@')
                Q.rear=0;
            i++;
        }
        Q.data[Q.rear]='\0';
            printf("%s\n",Q.data);



    }
}

猜你喜欢

转载自blog.csdn.net/qq_43506138/article/details/85620053
今日推荐