日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构实验之栈与队列九:行编辑器

發布時間:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构实验之栈与队列九:行编辑器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description
一個簡單的行編輯程序的功能是:接受用戶從終端輸入的程序或數據,并存入用戶的數據區。
由于用戶在終端上進行輸入時,不能保證不出差錯,因此,若在編輯程序中,“每接受一個字符即存入用戶數據區”的做法顯然不是最恰當的。較好的做法是,設立一個輸入緩沖區,用以接受用戶輸入的一行字符,然后逐行存入用戶數據區。允許用戶輸入出差錯,并在發現有誤時可以及時更正。例如,當用戶發現剛剛鍵入的一個字符是錯的時,可補進一個退格符"#",以表示前一個字符無效;
如果發現當前鍵入的行內差錯較多或難以補救,則可以鍵入一個退行符"@",以表示當前行中的字符均無效。
如果已經在行首繼續輸入’#'符號無效。
Input
輸入多行字符序列,行字符總數(包含退格符和退行符)不大于250。

Output
按照上述說明得到的輸出。

Sample
Input
whli##ilr#e(s#*s)
outcha@putchar(*s=#++);
Output
while(*s)
putchar(*s++);

/* #include<bits/stdc++.h>using namespace std;#define intsize 10000 #define addsize 1000typedef char element;typedef struct {element *top;element *base;int stacksize; } Sqstack;int initstack(Sqstack &s) {s.base = (element *)malloc(intsize * sizeof(element));if(!s.base)return -1;s.top = s.base;s.stacksize = intsize;return 1; }int push(Sqstack &s, element e) {if(s.top - s.base >= s.stacksize){s.base = (element *)realloc(s.base, (s.stacksize + addsize) * sizeof(element));if(!s.base)return -1;s.top = s.base + addsize;s.stacksize += addsize;}*s.top++ = e;return 0; } int pop(Sqstack &s) {if(s.top == s.base)return -1;return *--s.top; } int emptystack(Sqstack &s) {if(s.base == s.top)return 0;elsereturn 1; } int top(Sqstack &s) {return *(s.top--); } void clearstack(Sqstack &s) {s.base = s.top; } void show(Sqstack &s) {while(s.top != s.base){printf("%c", *s.base);s.base++;} } int main() {char a[251];int len, i;while(~scanf("%s", a)){Sqstack s;initstack(s);len = strlen(a);for(i = 0; i < len; i++){if(a[i] != '#' &&a[i] != '@')push(s, a[i]);else if(a[i] == '#'){if(emptystack(s) == 1)pop(s);}else if(a[i] == '@'){clearstack(s);}}show(s);printf("\n");} }*/ #include<bits/stdc++.h>using namespace std;int main() {int t, i, n;char a[255], b[255];while(gets(a)){t = 0;n = strlen(a);for(i = 0; i < n; i++){if(a[i] == '#'){if(t != 0){t--;}}else if(a[i] == '@'){t = 0;}elseb[t++] = a[i];}for(i = 0; i <= t - 1; i++){if(i == t - 1)printf("%c\n", b[i]);else printf("%c", b[i]);}}return 0; }

總結

以上是生活随笔為你收集整理的数据结构实验之栈与队列九:行编辑器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。