#ifndef STACK_H
#define STACK_H
#include
#include
typedef int DataType;
typedef struct Stack{
DataType data;
struct Stack *next;
}Stack;
//³õʼ»¯Õ»
void StackInitial(Stack **s)
{
(*s)=(Stack *)malloc(sizeof(Stack));
(*s)->next=NULL;
if(!(*s)){
printf("ÉêÇëÄÚ´æ¿Õ¼äʧ°Ü!\n");
exit(0);
}
}
//ÅжÏÕ»ÊÇ·ñΪ¿Õ
int StackNotEmpty(Stack *s)
{
if(s->next==NULL)
return 0;
else
return 1;
}
//ÈëÕ»
int StackPush(Stack *s,DataType x)
{
Stack *p;
p=(Stack *)malloc(sizeof(Stack));
if(!p){
printf("ÉêÇëÄÚ´æ¿Õ¼äʧ°Ü!\n");
exit(0);
}
p->data=x;
p->next=s->next;
s->next=p;
return 1;
}
//³öÕ»
int StackPop(Stack *s,DataType *d)
{
Stack *p=s->next;
if(s->next==NULL){
printf("¶ÑÕ»Òѿգ¬ÎÞÊý¾ÝÔªËØ³öÕ»!\n");
return 0;
}
else{
s->next=p->next;
*d=p->data;
free(p);
return 1;
}
}
//ȡջ¶¥ÔªËØ
int StackTop(Stack *s,DataType *d)
{
if(s->next==NULL){
printf("¶ÑÕ»ÒÑ¿Õ!\n");
return 0;
}
else{
*d=s->next->data;
return 1;
}
}
//ÊÍ·ÅÉêÇëµÄÄÚ´æ¿Õ¼ä
void Destroy(Stack *s)
{
Stack *p,*p1;
p=s;
while(p!=NULL){
p1=p;
p=p->next;
free(p1);
}
}
#endif