实现代码:
#ifndef __STACK_H__
#define __STACK_H__
#include <malloc.h>
/************************* 定义栈结点结构*********************/
typedef struct node
{
struct node* previous; // 指向前一个栈结点
int data; // 栈结点数据
}Node,* pNode;
/************************* 定义栈结构*********************/
typedef struct
{
pNode top; // 指向栈顶
int len; // 栈的长度
}* pStack, Stack;
/************************* 初始化栈*********************/
int initstack(pStack s)
{
if(s)
s=NULL;
s=(pStack)malloc(sizeof(Stack));
if(!s)
return 0;
s->top=NULL;
s->len = 0;
return 1;
}
/************************* 入栈*********************/
int push(pStack s, int data)
{
pNode p = NULL;
if(!s)
return 0;
p = (pNode)malloc(sizeof(Node));
p->previous = s->top;
s->top = p;
p->data = data;
s->len++;
return 1;
}
/************************* 出栈*********************/
int pop(pStack s)
{
pNode p = NULL;
int data = 0;
if(!s)
return 0;
p = s->top;
data = p->data;
s->top = p->previous;
free(p);
p=NULL;
s->len--;
return data;
}
/*************************判断栈是否为空*********************/
int empty(pStack s)
{
return s->len==0;
}
/************************* 获取栈顶元素, 不出栈 ********************/
int getTop(pStack s)
{
pNode p = NULL;
if(!s || empty(s))
return 0;
p = s->top;
return p->data;
}
/************************* 销毁栈 *********************/
int Destroy(pStack s)
{
int i=0;
if(!s)
return 0;
while(!empty(s))
{
pop(s);
}
free(s);
return 1;
}
#endif//__STACK_H__