码迷,mamicode.com
首页 > 其他好文 > 详细

栈的应用之行编辑程序

时间:2015-05-09 16:36:58      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:行编辑   顺序栈的应用   

思路:

栈作为输入缓冲区,每当从终端了接受一个字符之后先做如下判别:

1:若是退格符#,从栈顶删去一个元素,即出栈Pop;

2:若是退行符@,将字符栈清空,即clear;

3:若不是#或@,即为有效字符,将该字符入栈,即Push;

顺序栈的代码:点击打开链接

只需将 typedef int ElemType -------->>> typedef char ElemType 

#include"stack.h"
void LineEdit()
{
	Stack st;
	InitStack(&st);
	
	char item;
	int ch = getchar();

	while(ch != EOF)//全文结束符
	{
		/*确定的某行编辑*/
		while(ch != EOF && ch != '\n')//输入的字符不是结束符和回车符(行结束符)
		{
			switch(ch)
			{
			/*退格符(非空时出栈)*/
			case '#':
				if(!IsEmpty(&st))
					Pop(&st,&item);
				break;
			/*退行符(清空栈)*/
			case '@':
				clear(&st);
				break;
			/*有效字符(未满时入栈)*/
			default:
				if(!IsFull(&st)) 
					Push(&st,ch);
				break;
			}//switch
			ch = getchar();
		}//while

	/*将字符栈的内容送至代用过程的缓冲区:此处仅仅将其打印出来*/
		int i;
		cout<<"the content is:";
		for(i = 0;i<=st.top-1;++i)
		{
			cout<<st.base[i];
		}
		cout<<endl;
		clear(&st);

	/*全文未结束输入:进行下一行编辑*/
		if(ch != EOF)
			ch = getchar();
	}
	/*调用完之后,销毁栈,防止内存泄露*/
	destory(&st);
}//LineEdit

int main()
{
	LineEdit();
	return 0;
}

技术分享




栈的应用之行编辑程序

标签:行编辑   顺序栈的应用   

原文地址:http://blog.csdn.net/zongyinhu/article/details/45601783

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!