資料結構實驗之棧與佇列九 行編輯器

2021-08-22 06:01:29 字數 1227 閱讀 4231

problem description

由於使用者在終端上進行輸入時,不能保證不出差錯,因此,若在編輯程式中,「每接受乙個字元即存入使用者資料區」的做法顯然不是最恰當的。較好的做法是,設立乙個輸入緩衝區,用以接受使用者輸入的一行字元,然後逐行存入使用者資料區。允許使用者輸入出差錯,並在發現有誤時可以及時更正。例如,當使用者發現剛剛鍵入的乙個字元是錯的時,可補進乙個退格符"#",以表示前乙個字元無效; 

如果發現當前鍵入的行內差錯較多或難以補救,則可以鍵入乙個退行符"@",以表示當前行中的字元均無效。 

如果已經在行首繼續輸入'#'符號無效。 

input

輸入多行字串行,行字元總數(包含退格符和退行符)不大於250。 

output

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

sample input

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

outcha@putchar(*s=#++);

sample output

while(*s)

putchar(*s++);

#include

#include

#include

#define stackmax 10000

#define stacknum 10000

typedef int elemtype;

typedef struct

sqstack;

void initstack(sqstack *s)

//棧的初始化

void push(sqstack *s,char e)

*(s->top)=e;

s->top++;

}//入棧操作

void pop(sqstack *s)

//出棧操作

int isempty(sqstack *s)

//判棧空

char gettop(sqstack *s)

void show(sqstack *s)

printf("\n");

}//從棧底往上輸出棧內元素

int main()

//如果是#號,就判斷當前棧是否為空,如果為非空的話,就彈出棧頂元素,相當於刪除他之前的乙個字母

else if(a[i]=='@')

}//如果是@號,就利用while語句把棧中元素全部彈出,相當於刪除所有元素

}show(&s);//輸出棧

}return 0;

}

資料結構實驗之棧與佇列九 行編輯器

problem description 乙個簡單的行編輯程式的功能是 接受使用者從終端輸入的程式或資料,並存入使用者的資料區。由於使用者在終端上進行輸入時,不能保證不出差錯,因此,若在編輯程式中,每接受乙個字元即存入使用者資料區 的做法顯然不是最恰當的。較好的做法是,設立乙個輸入緩衝區,用以接受使用...

資料結構實驗之棧與佇列九 行編輯器

problem description由於使用者在終端上進行輸入時,不能保證不出差錯,因此,若在編輯程式中,每接受乙個字元即存入使用者資料區 的做法顯然不是最恰當的。較好的做法是,設立乙個輸入緩衝區,用以接受使用者輸入的一行字元,然後逐行存入使用者資料區。允許使用者輸入出差錯,並在發現有誤時可以及時...

資料結構實驗之棧與佇列九 行編輯器

time limit 1000 ms memory limit 65536 kib submit statistic problem description 由於使用者在終端上進行輸入時,不能保證不出差錯,因此,若在編輯程式中,每接受乙個字元即存入使用者資料區 的做法顯然不是最恰當的。較好的做法是,...