要求:整体输入,调整内容后整体输出(其中#退格,@代表退行)。
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define MAX_SIZE 5
#define INIT_SIZE 2
typedef char ElemType;
typedef int status;
typedef struct Lnode
{
ElemType *top;//栈顶指针
ElemType *base;//栈底指针
int max;//最大存储量
int size;//实际存储量
}Lnode;//节点类型
//1.栈的初始化
status Init_Stack(Lnode *p)
{
p->base=(ElemType*)malloc(INIT_SIZE*sizeof(ElemType));//初始化数组
if(!p->base)
{
printf("栈初始化失败\n");
exit(0);//初始化失败退出
}
p->max=INIT_SIZE;//一些初始数据的赋值
p->size=0;
p->top=p->base;//头尾指针统一
return OK;
}
//2.入栈
status Push_Stack(Lnode *p,ElemType e)
{
if(p->top-p->base>=p->max)//判断是否需要扩容
{
p->base=(ElemType*)realloc(p->base,(MAX_SIZE+p->max)*sizeof(ElemType));
if(!p->base)//扩容失败退出