还是栈和队列的问题! - -!

时间一粒 2010-05-30 02:22:05
行编辑程序问题:在用户输入一行的过程中,允许用户输入出差错,并在发现有
误时可以及时更正。

要求: 设立一个输入缓冲区,用以接受用户输入的一行字符,然后逐行存入用户数据区,
并假设“#”为退格符,“@”为退行符。(利用栈来完成)

废话不多说!向高手求解!
谢谢~
...全文
114 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ArtiFly2000 2010-05-30
  • 打赏
  • 举报
回复
只能在一端(末尾)插入、删除,从形式看就是一个栈

[Quote=引用 3 楼 findcsdn 的回复:]
为什么要用栈呢,用一个普通的缓冲区就行。
[/Quote]
selooloo 2010-05-30
  • 打赏
  • 举报
回复
上面忘记回车了,是
ab
dfg
selooloo 2010-05-30
  • 打赏
  • 举报
回复
这里用的是stl里的栈,当然可以定义自己的栈,不影响结果
如输入
123@abc#
de#fg
(CTRL+Z结束)

输出abdfg
#include <stdio.h>
#include <stack>
#include <stdlib.h>
using namespace std;

char* input()
{
stack<char> sbuf;
static char tmp[128]={0},len=127;
char ch;
while((ch=getchar())!=EOF)//结束标志,可以设置成别的值
{
sbuf.push(ch);
}
while(!sbuf.empty())
{
ch=sbuf.top();
sbuf.pop();
if(ch=='@')
{
while(!sbuf.empty()) sbuf.pop();
break;
}
else if(ch=='#')
{
sbuf.pop();
}
else
tmp[len--]=ch;
}
return tmp+len+1;
}
int main(void)
{
puts(input());
system("pause");
return 0;
}
yuanzhang198711 2010-05-30
  • 打赏
  • 举报
回复
这是栈或递归的例子,其实也可以用双队列实现。
时间一粒 2010-05-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 budtang 的回复:]
楼主为什么 不自己先写一下 有问题弄不明白再问呢???
[/Quote]
我也想,但是我还要做其它的题目啊!
老师一下子给30题...而期限就到了....
时间一粒 2010-05-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kuyucman 的回复:]
《数据结构》严蔚敏版: Page 50
[/Quote]
--!
都是严蔚敏的《数据结构》,怎么我那本《数据结构》没有课后练习题的?
这题目是老师给的...
budweiser 2010-05-30
  • 打赏
  • 举报
回复
楼主为什么 不自己先写一下 有问题弄不明白再问呢???
东莞某某某 2010-05-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 findcsdn 的回复:]

为什么要用栈呢,用一个普通的缓冲区就行。
[/Quote]

因为这是栈那一节的课后练习。
findcsdn 2010-05-30
  • 打赏
  • 举报
回复
为什么要用栈呢,用一个普通的缓冲区就行。

东莞某某某 2010-05-30
  • 打赏
  • 举报
回复
《数据结构》严蔚敏版: Page 50
wangbinykit 2010-05-30
  • 打赏
  • 举报
回复
这个是数据结构书中的例子吧

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧