实例208 用栈实现行编辑程序 - C源码程序 - 谷速源码
下载频道> 资源分类> 编程语言> C源码> 实例208 用栈实现行编辑程序

标题:实例208 用栈实现行编辑程序
分享到:

所属分类: C源码 资源类型:程序源码 文件大小: 2.57 KB 上传时间: 2017-07-15 22:40:32 下载次数: 9 资源积分:1分 提 供 者: admin 实例208 用栈实现行编辑程序
内容:
#include <stdio.h>
#define STACK_SIZE 100 /*假定预分配的栈空间最多为100个元素*/
typedef char DataType; /*设定DataType的代表的数据类型为字符型*/
 
typedef struct /*定义结构体*/
{
    DataType *base; /*定义栈底指针*/
    DataType *top; /*定义栈顶指针*/
    int stacksize; /*定义栈的大小*/
} SeqStack; /*SeqStack为该结构体类型*/
 
void Initial(SeqStack *S) /*初始化栈*/
{
S->base = (DataType*)malloc(STACK_SIZE *sizeof(DataType));
if (!S->base)
exit( - 1);
S->top = S->base; /*栈为空时栈顶栈底指针指向同一处*/
S->stacksize = STACK_SIZE;
}
 
int IsEmpty(SeqStack *S) /*判栈空*/
{
return S->top == S->base;
}
 
int IsFull(SeqStack *S) /*判栈满*/
{
return S->top - S->base == STACK_SIZE - 1;
}
 
void Push(SeqStack *S, DataType x) /*进栈*/
{
if (IsFull(S))
{
printf("overflow"); /*上溢,退出运行*/
exit(1);
}
else
*S->top++ = x; /*栈顶指针加1后将x入栈*/
}
 
void Pop(SeqStack *S) /*出栈*/
{
if (IsEmpty(S))
{
printf("NULL"); /*下溢,退出运行*/
exit(1);
}
else
--S->top; /*栈顶元素返回后将栈顶指针减1*/
}
 
DataType Top(SeqStack *S) /* 取栈顶元素*/
{
if (IsEmpty(S))
{
printf("empty"); /*下溢,退出运行*/
exit(1);
}
return *(S->top - 1);
}
 
void ClearStack(SeqStack *S) /*清空栈*/
{
S->top = S->base;
}
 
void LineEdit(SeqStack *S) /*自定义行编辑程序*/
{
int i = 0, a[100], n; /*定义变量数据类型为基本整型*/
char ch; /*定义ch为字符型*/
ch = getchar(); /*将输入字符赋给ch*/
while (ch != '\n') /*当未输入回车时执行循环体语句*/
{
i++; /*记录进栈元素个数*/
switch (ch) /*判断输入字符*/
{
case '#': /*当输入字符为#*/
Pop(S); /*出栈*/
i -= 2; /*元素个数减2*/
break;
case '@': /*当输入字符为@*/
ClearStack(S); /*清空栈*/
i = 0; /*进栈元素个数清零*/
break;
default:
Push(S, ch); /*当不是#和@,其余元素进行进栈操作*/
}
ch = getchar(); /*接收输入字符赋给ch*/
}
for (n = 1; n <= i; n++) /*将栈中元素存入数组中*/
{
a[n] = Top(S);
Pop(S);
}
for (n = i; n >= 1; n--) /*将数组中的元素输出*/
printf("%c", a[n]);
}
 
void main() /*主函数*/
{
SeqStack *ST;
printf("please input\n");
Initial(ST);
LineEdit(ST); /*调用行编辑函数*/
}
 

文件列表(点击上边下载按钮,如果是垃圾文件请在下面评价差评或者投诉):

实例208 用栈实现行编辑程序
实例208 用栈实现行编辑程序\www.gusucode.com
实例208 用栈实现行编辑程序\文件说明.txt
实例208 用栈实现行编辑程序\www.gusucode.com.txt
实例208 用栈实现行编辑程序\www.gusucode.com\208.C
实例208 用栈实现行编辑程序\【谷速代码】-免费源码.url

关键词: 实例 程序

相关推荐

Top_arrow
回到顶部
联系方式| 版权声明| 招聘信息| 广告服务| 银行汇款| 法律顾问| 兼职技术| 付款方式| 关于我们|
网站客服网站客服 程序员兼职招聘 程序员兼职招聘
沪ICP备19040327号-3
公安备案号:沪公网安备 31011802003874号
库纳格流体控制系统(上海)有限公司 版权所有
Copyright © 1999-2014, GUSUCODE.COM, All Rights Reserved