| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 911 人关注过本帖
标题:[分享] 行编辑程序
取消只看楼主 加入收藏
homer2005nh
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-11-15
收藏
 问题点数:0 回复次数:1 
[分享] 行编辑程序

/*行编辑程序*/

/*利用栈实现的*/

#include "stdio.h"
#include "stdlib.h"
#define SIS 100 /*初始大小*/
#define SI 10 /*增量大小*/
#define OVERFLOW 0
#define TRUE 1
#define FALSE 0

typedef struct{
char *base;
char *top;
char stacksize;
}Sqstack;

char Initstack(Sqstack *s)
{
s->base=(char *)malloc(SIS*sizeof(char));
s->top=s->base;
s->stacksize=SIS;
}

char Push(Sqstack *s, char e)
{
if(s->top-s->base>=s->stacksize)
{
s->base=(char *)realloc(s->base,(SIS+SI)*sizeof(char));
if(!s->base) exit(OVERFLOW);
s->top=s->base+s->stacksize;
s->stacksize+=SI;
}
*s->top++=e;
}

char StackEmpty(Sqstack s)
{
if(s.top==s.base)
return TRUE;
else
return FALSE;
}


char Pop(Sqstack *s, char *e)
{
if(s->top==s->base) return FALSE;
*e=*(--s->top);
}

char GetTop(Sqstack s)
{
char e;
if(s.top==s.base) return FALSE;
e=*(s.top-1);
return(e);
}


char Clearstack(Sqstack *s)
{
while(s->top!=s->base)
s->top=s->base;
}
char Destroystack(Sqstack *s)
{
while(s->top!=s->base)
{
s->top--;
free(s->top);
}
}
void LineEdit()
{
Sqstack *s;
char ch,c;
s=(Sqstack *)malloc(sizeof(Sqstack));
Initstack(s);
ch=getchar();
while(ch!=EOF&&ch!='\n')
{
switch(ch)
{
case '#': Pop(s,&c); break;
case '@': Clearstack(s); break;
default : Push(s,ch); break;
}
ch=getchar();
}
while(s->top!=s->base)
{
Pop(s,&c);
printf("%c",c);
}
Destroystack(s);
}

main()
{
printf("Input data :\n");
LineEdit();
}



/*行编辑程序*/

/*利用栈实现的*/

#include "stdio.h"
#include "stdlib.h"
#define SIS 100 /*初始大小*/
#define SI 10 /*增量大小*/
#define OVERFLOW 0
#define TRUE 1
#define FALSE 0

typedef struct{
char *base;
char *top;
char stacksize;
}Sqstack;

char Initstack(Sqstack *s)
{
s->base=(char *)malloc(SIS*sizeof(char));
s->top=s->base;
s->stacksize=SIS;
}

char Push(Sqstack *s, char e)
{
if(s->top-s->base>=s->stacksize)
{
s->base=(char *)realloc(s->base,(SIS+SI)*sizeof(char));
if(!s->base) exit(OVERFLOW);
s->top=s->base+s->stacksize;
s->stacksize+=SI;
}
*s->top++=e;
}

char StackEmpty(Sqstack s)
{
if(s.top==s.base)
return TRUE;
else
return FALSE;
}


char Pop(Sqstack *s, char *e)
{
if(s->top==s->base) return FALSE;
*e=*(--s->top);
}

char GetTop(Sqstack s)
{
char e;
if(s.top==s.base) return FALSE;
e=*(s.top-1);
return(e);
}


char Clearstack(Sqstack *s)
{
while(s->top!=s->base)
s->top=s->base;
}
char Destroystack(Sqstack *s)
{
while(s->top!=s->base)
{
s->top--;
free(s->top);
}
}
void LineEdit()
{
Sqstack *s;
char ch,c;
s=(Sqstack *)malloc(sizeof(Sqstack));
Initstack(s);
ch=getchar();
while(ch!=EOF&&ch!='\n')
{
switch(ch)
{
case '#': Pop(s,&c); break;
case '@': Clearstack(s); break;
default : Push(s,ch); break;
}
ch=getchar();
}
while(s->top!=s->base)
{
Pop(s,&c);
printf("%c",c);
}
Destroystack(s);
}

main()
{
printf("Input data :\n");
LineEdit();
}



搜索更多相关主题的帖子: 编辑程序 分享 
2006-11-15 22:35
homer2005nh
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-11-15
收藏
得分:0 
可以删除 #前的一个字符,
也可以删除@前的所有字符

做我自己!
2006-11-17 12:25
快速回复:[分享] 行编辑程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011854 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved