学习笔记------数据结构(C语言版)栈应用 行编辑程序
来源:互联网 发布:英语四级考试准备知乎 编辑:程序博客网 时间:2024/05/21 21:37
//SqStack.cpp
#include "predefined.h"#include "SqStack.h"Status InitStack(SqStack *S)//构造一个空栈{(*S).base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));if(!(*S).base) exit(OVERFLOW);(*S).top=(*S).base;(*S).stacksize=STACK_INIT_SIZE;return OK;}Status DestroyStack(SqStack *S)//销毁栈S,S不再存在{free((*S).base);(*S).base=(*S).top=NULL;//避免野指针(*S).stacksize=0;return OK;}Status ClearStack(SqStack *S)//把S置为空栈{(*S).top=(*S).base;return OK;}Status StackEmpty(SqStack S)//若栈为空,返回TRUE{if(S.base==S.top) return TRUE;else return FALSE;}int StackLength(SqStack S)//返回栈S长度{return S.top-S.base;}Status GetTop(SqStack S,SElemType *e)//若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERROR。{if(StackEmpty(S)) return ERROR;*e=*((S).top-1);return OK;}Status Push(SqStack *S,SElemType e)//插入元素e为新的栈顶元素{if(((*S).top-(*S).base)>=(*S).stacksize){(*S).base=(SElemType *)realloc((*S).base,((*S).stacksize+STACKINCREMENT)*sizeof(SElemType));if(!(*S).base) exit(OVERFLOW);(*S).top=(*S).base+(*S).stacksize;(*S).stacksize+=STACKINCREMENT;}(*(*S).top)=e;(*S).top++;return OK;}Status Pop(SqStack *S,SElemType *e)//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR.{if((*S).base==(*S).top) return ERROR;*e=*(--(*S).top);return OK;}Status StackTraverse(SqStack S,void (*visit)(SElemType *p))//从栈底到栈顶依次对每个元素调用函数visit()。一旦visit调用失败,则操作失败{SElemType *p;p=S.base;while(p!=S.top){visit(p);p++;}return OK;}
//main.cpp
#include "predefined.h"#include "SqStack.h"FILE *fp;void PrintElem(SElemType *p){printf("%d ",*p);}void copy(SElemType *p){fputc(*p,fp);}int main(){fp=fopen("hangbianji","w");if(fp){LineEdit();fclose(fp);}elseprintf("创建失败!\n");}void LineEdit()//算法3.2:利用字符栈S,从终端接收一行并传送至调用过程的数据区{SqStack S;char ch;SElemType m;InitStack(&S);ch=getchar();while(ch!=EOF){while(ch!=EOF&&ch!='\n'){switch(ch){case'#':Pop(&S,&m);break;case'@':ClearStack(&S);break;default:Push(&S,ch);break;}ch=getchar();}StackTraverse(S,copy);fputc('\n',fp);ClearStack(&S);if(ch!=EOF) ch=getchar();}}
0 0
- 学习笔记------数据结构(C语言版)栈应用 行编辑程序
- 数据结构题典022:栈的应用——行编辑程序(C语言版)
- 学习笔记------数据结构(C语言版)栈应用 括号匹配
- 学习笔记------数据结构(C语言版)栈应用 迷宫寻路
- 学习笔记------数据结构(C语言版)栈应用 表达式求值
- 数据结构(c语言版) 学习笔记
- 【数据结构】栈的应用--行编辑程序(c++)
- 学习笔记------数据结构(C语言版)栈的顺序存储
- 学习笔记------数据结构(C语言版)栈和递归 汉诺塔
- 严蔚敏--数据结构(C语言版)学习笔记
- 数据结构(C语言版)-递归学习笔记
- 学习笔记------数据结构(C语言版)链表应用~一元多项式求和
- 《数据结构(C语言版)》- 栈
- 数据结构(C语言版)线性表学习笔记
- 数据结构学习笔记之链表(C语言版)
- 学习笔记------数据结构(C语言版) 线性表顺序存储
- 学习笔记------数据结构(C语言版) 线性表链式存储
- 学习笔记------数据结构(C语言版) 静态链表
- 轻松搭建dubbo环境
- 文章标题
- 等值连接(inner)左连接(left join)和右连接(right join) 自连接
- 架构思想
- 关于两个变量值的互换问题
- 学习笔记------数据结构(C语言版)栈应用 行编辑程序
- Android 面试精华题目总结
- 【Android错误总结】错误java.lang.NoSuchMethodError: android.ImageView.setBackground
- UVa 315 Network(无向图求割点)
- Mac上HAX is not installed on this machine 的解决办法
- MyBaits关联查询一对一、一对多
- Android 6.0 构建更高质量的应用
- Linux Centos7安装 jdk
- (C++)链表实现Farey序列