(1)每行輸入輸出陣列前推入棧中暫存。
(2)檢查輸入的字元,如果是「#」,則從棧頂刪去乙個字元;如果是「@」,則清空棧。
(3)發現使用者鍵入回車就將當前棧中的字元從棧尾到棧頂推到輸出陣列。
(4)重複上述操作直到使用者輸入eof(即 ctrl + z)。
//----*---*---*---*----
#define stack_init_size 100
#define stackincrement 10
#define overflow -1
#define ok 1
#define error 0
#define true 1
#define false 0
#include#includetypedef int status;
typedef char selemtype;
//定義順序棧
typedef structsqstack;
//初始化
status initstack(sqstack &s)
//入棧操作
status push(sqstack &s,selemtype e)
*s.top++ = e;
return ok;
}//獲取棧頂元素
status gettop(sqstack s,selemtype &e)
//出棧操作
status pop(sqstack &s,selemtype &e)
//求棧長
status stacklength(sqstack s)
//清空棧
status clearstack(sqstack &s)
//探空
status stackempty(sqstack s)
//輸出棧中元素
void print(sqstack s)
}//銷毀棧
status destroystack(sqstack &s)
void main()
ch = getchar();
} while( p != s.top)
out[i++] = '\n';
p = s.base ;
clearstack(s);
if(ch != eof)
ch = getchar();
} out[i] = '\0';
puts(out);
destroystack(s);
}
利用棧做行編輯器
問題 include include include includeusing namespace std define true 1 define false 0 define ok 1 define error 0 define infeasible 1 define overflow 2 ty...
資料結構實驗之棧 行編輯器 棧的應用
time limit 1000ms memory limit 65536k 有疑問?點這裡 由於使用者在終端上進行輸入時,不能保證不出差錯,因此,若在編輯程式中,每接受乙個字元即存入使用者資料區 的做法顯然不是最恰當的。較好的做法是,設立乙個輸入緩衝區,用以接受使用者輸入的一行字元,然後逐行存入使用...
棧 行編輯程式
如果遇到 表示後退一格,即前一字元無效,如果遇到 表示前一單詞無效,即退出到空格或所在行頭為止。採用棧實現。輸入 whli ilr e s s 輸入包含若干行,由各種字元構成。輸出 while s 利用描述規則輸出最後的文字內容。seqstack.h ifndef seqstack h define...