//简单的文本编辑程序,输入'&'代表全文结束,'*' 代表一段的结束,'#'代表退格符,
//'@'代表删除刚才打的所有的字符,
#include<iostream>
#include<stdio.h>
#include <conio.h>
#include <process.h>
#include <malloc.h>
using namespace std;
#define STACK_INIT_SIZE 100
typedef struct
{
char *base;//栈底指针,在栈构造之前和销毁之后,base的值为NULL
char *top;//栈顶指针
}sqstack;//栈结构
typedef struct LNode
{
char data;
struct LNode *next;
}LNode;//链表结构
int InitStsck(sqstack &s)
{//构造一个空栈
s.base=(char *)malloc(STACK_INIT_SIZE*sizeof(char));
if(!s.base) return 0 ;
s.top=s.base;
return 1;
}//InitStsck
char GetTop(sqstack s)
{//若栈不空,则用e返回栈顶元素
char e;
if(s.top==s.base) return 0;
e=*(s.top-1);
return e;
}//GetTop
int Push(sqstack &s,char e)
{ //插入e为新的栈顶元素
*s.top=e;
s.top++;
return 1;
} // Push
char Pop(sqstack &s)
{//若栈不空,则删除栈顶元素,用e返回其值
char e;
if(s.top==s.base) return '@';
--s.top;
e=*s.top;
return e;
}//Pop
void ClearStack(sqstack &s)
{ //清空栈
s.top=s.base;
}// Clearstack
void DestroyStack(sqstack &s)
{//销毁栈
free(s.base);
}//DestroyStack
LNode *Init_Sq(LNode *p)
{//初始化一个单链表
LNode *q,*head;
p=(LNode *)malloc(sizeof(LNode));
if(!p)
cout<<"no memory"<<endl;
p->next=NULL;
p->data='a';
head=p;
q=p;
return head;
}//Init-Sq
int exchange(sqstack &a,sqstack &b)
{//将a栈中的元素导入b栈忠
char c='a',e;
while (c!='@')
{
c= Pop(a);
if(c!='@')
Push(b,c);
}
return 1;
}//exchange
LNode *change(sqstack &b,LNode *l)
{// 把栈b中的元素导入单链表l中
LNode *p,*q;
char c,e;
p=l;
q=l;
while (c!='@')
{
c= Pop(b);
if(c!='@')
{
p->data=c;
p->next=Init_Sq(p);
p=p->next;
}
}
return p;
}//change
void show(LNode *p)
{//输出大链表中的元素
LNode *l;
l=p;
cout<<"all datas"<<endl;
while(l->next)
{
if(l->data!='*')
cout<<l->data;
else
cout<<"\n";
l=l->next;
}
}//show
void show2(sqstack &s)
{
char *p;
int i;
p=s.top-1;
for(i=0;i<s.top-s.base;i++)
{
cout<<*p;
p--;
}
cout<<endl;
}
void DestroyLnode(LNode *p)
{//销毁单链表
free(p);
}//DestroyLnode
int main()
{
sqstack a,b;
char ch ,c;
LNode *p,*l,*q;
InitStsck(a);
InitStsck(b) ;
p=Init_Sq(p);
l=p;
while(c!='&')
{
cout<<"datas"<<endl;
while((ch=getchar())!='\n')
{
c=ch;
if(ch!='&')
{
switch(ch)
{
case '#':Pop(a); break;
case '@':ClearStack(a);break;
default:Push(a,ch);break;
}//swich
}//if
}//while
}//while
exchange(a,b);
p=change(b,p);
system("cls");
show(l);
DestroyStack(a);
DestroyStack(b);
DestroyLnode(l);
return 1;
}//main
没有合适的资源?快使用搜索试试~ 我知道了~
简单的c++文本编辑程序 输入&为全文结束
共1个文件
txt:1个
需积分: 13 29 下载量 44 浏览量
2008-12-29
22:26:50
上传
评论
收藏 1KB RAR 举报
温馨提示
这是我的前一个上传的 文本编辑有一点改正,要下载就下载这个吧
资源推荐
资源详情
资源评论
收起资源包目录
11.rar (1个子文件)
文本编辑11
文本编辑11.txt 3KB
共 1 条
- 1
资源评论
cxz6938561
- 粉丝: 3
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功