#include <stdio.h>
#include<stdlib.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define Ok 1
#define Error 0
typedef int SElemType;
typedef int Status;
typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack; //顺序栈的结构体定义 *base指向栈底,不变 *top指向栈顶 改变
Status Ini_Stack(SqStack &s) //初始化顺序栈
{
s.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));//给*base分配空间
if(!s.base) exit(1);
s.top=s.base; //给*top分配地址
s.stacksize=STACK_INIT_SIZE; //指定栈的大小
return Ok;
}
/*Status Creat_Stack(SqStack *s) //刚开始的时候自己写的创建栈的函数 实际上就是push函数加上取值
{
SElemType e;
printf("请输入一些数字创建一个栈(按0结束)");
scanf("%d",&e);
while(e!=0)
{
if(s->top-s->base>=s->stacksize)
{
s->base=(SElemType*)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!s->base) exit(1);
s->top=s->base+s->stacksize;
s->stacksize=s->stacksize+STACKINCREMENT;
}
*s->top++=e;
scanf("%d",&e);
}
return 1;
}*/
Status Push(SqStack &s,SElemType e) //入栈
{
if(s.top-s.base>=s.stacksize) //如果栈满了,用realloc函数使栈增大
{
s.base=(SElemType*)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!s.base) exit(1);
s.top=s.base+s.stacksize;
s.stacksize=s.stacksize+STACKINCREMENT;
}
*s.top++=e; //将数值付给指针top,top++
return Ok;
}
void Creat_Stack(SqStack &s) //创建栈的函数
{
int e;
printf("请输入栈(按0结束)");
scanf("%d",&e);
while(e!=0)
{
Push(s,e);
scanf("%d",&e);
}
}
Status Pop(SqStack &s,SElemType &e) //弹出栈
{
if(s.top==s.base) return Error;
e=*--s.top; //先让top指针--,再输出top指针所指向的值
return Ok;
}
/*void StackTraverse(SqStack *s,void (*visit)(SElemType e)) //课本上的输出函数
{
while(s->top!=s->base)
visit(--*s->top);
}
void print(SElemType e)
{
printf("%d",e);
}*/
void print1(SqStack s) //自己开始时瞎写的直接根据栈的数组挨个输出
{
int i ;
for(i=s.top-s.base;i>0;i--)
printf("%d",s.base[i-1]);
printf("\n");
}
void print(SqStack s) //利用pop函数弹栈输出
{
int e;
while(s.base!=s.top)
{
Pop(s,e);
printf("%d",e);
}
}
void main ()
{
SqStack s;
SElemType a;
Ini_Stack(s);
Creat_Stack(s);
print1(s);
print(s);
//StackTraverse(&s,print);
getchar();
getchar();
}
当时想的这以后学了半天还是不会啊,现在想想确实有些事,不是一时半会儿就能有效果的,还是得要坚持,坚持下来了,怎么着都会有些效果的
记得那个时候没写一个程序都会很吃力,每次顺利实现了,都会第一个跟她分享,快乐真是乘以n倍,可是,这种快乐,她可能从来不曾感受到,别人的甜言蜜语才是她想要的吧