資料結構實驗之棧 行編輯器

2021-07-16 09:20:54 字數 1988 閱讀 2023

乙個簡單的行編輯程式的功能是:接受使用者從終端輸入的程式或資料,並存入使用者的資料區。 

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

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

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

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

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

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

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

while(*s)

putchar(*s++);

#include #include #include#define stack_init_size 100

#define stackincrement 10

#define ok 1

#define overflow -1

#define error  -2

typedef char selemtype;

typedef struct

sqstack;

void initstack(sqstack &s)// 構造乙個空棧s

void destroystack(sqstack &s)//銷毀棧;

void clearstack(sqstack &s)//清空棧;

void push(sqstack &s,selemtype e)// 插入元素e為新的棧頂元素

*s.top++=e;

}int pop(sqstack &s,selemtype &e)//若棧不空,則刪除s的棧頂元素,並     

//用e返回其值,並返回ok,否則返回

//error

int gettop(sqstack s,selemtype &e)//若棧不空,則用e返回s的棧頂元素,並

//返回ok,否則返回error

void putstack(sqstack &s)

printf("\n");

}void lineedit()//行編譯函式;

ch=getchar();

}temp=s.base;//temp指標指向base指標;

while(temp!=s.top)

clearstack(s);//清空棧;

printf("\n");

if(ch!=eof)

}     destroystack(s);//銷毀棧;

}int main()

#include #include #include #include using namespace std;

#define maxsize 10000

typedef struct stack

stack;

bool empty(stack &s)

return 0;

}void creat(stack &s)//棧的初始化;

void push(stack &s,char e)

s.top++;

*s.top=e;

}void pop(stack &s)

}void print(stack &s)

}void out(stack &s)//棧內元素的輸出

cout<}void clear(stack &s)

}void edit(stack &s,char str)

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

else if (str[i]!='#'&&str[i]!='@')

}}int main()

return 0;

}

資料結構實驗之棧 行編輯器

time limit 1000ms memory limit 65536k 有疑問?點這裡 乙個簡單的行編輯程式的功能是 接受使用者從終端輸入的程式或資料,並存入使用者的資料區。由於使用者在終端上進行輸入時,不能保證不出差錯,因此,若在編輯程式中,每接受乙個字元即存入使用者資料區 的做法顯然不是最恰...

資料結構實驗之棧 行編輯器

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

資料結構實驗之棧 行編輯器

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