行編輯程式(棧和佇列)
阿新 • • 發佈:2019-01-04
題目描述
一個簡單的行編輯程式的功能是:接受使用者從終端輸入的程式或資料,並存入使用者的資料區。答應使用者輸入出錯時可以及時更正。可以約定#為退格符,以表示前一個字元無效,@為退行符,表示當前行所有字元均無效。
輸出更正後的程式。
輸入
whli##ilr#e(s#*s)
輸出
while(*s)
樣例輸入 Copy
[email protected](*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); } }