------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include<stdlib.h>
typedef struct node{ int data;struct node * next;} node,*nodeptr;
typedef struct {nodeptr top;int cnt; } stacklink;
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int Initialize(stacklink *s)//初始化
{
if(!s) return 0;
s->top=NULL;
s->cnt=0;
return 1;
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int Push(stacklink *s,int e)//进栈
{
nodeptr p=(nodeptr)malloc(sizeof(node));
if(!p) return 0;
p->data=e;
p->next=s->top;
s->top=p;
s->cnt++;
return 1;
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int Pop(stacklink *s,int *e)//出栈
{
if(s->cnt<1) return 0;
*e=s->top->data;
nodeptr p=s->top;
s->top=s->top->next;
free(p);
p=NULL;
s->cnt--;
return 1;
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void StackTravel(stacklink s)//遍历
{
nodeptr p=s.top;
while(p!=NULL)
{printf("%d ",p->data);
p=p->next;
}
}