1、创建链式栈的节点和栈
#include <stdio.h>
#include <stdlib.h>
typedef int ELEMTYPE;
typedef struct linkstack_node
{
ELEMTYPE date;
struct linkstack_node *next;
}Linkstack_node,*pLinkstack_node;
typedef struct linkstack
{
pLinkstack_node top;
int count;
}Linkstack,*pLinkstack;
Linkstack linkstack_creat(void)
{
Linkstack linkstack;
linkstack.count=0;
linkstack.top=NULL;
return linkstack;
}
2、压栈
int linkstack_push(pLinkstack plinkstack,ELEMTYPE e)
{
pLinkstack_node p_new=(pLinkstack_node)malloc(sizeof(Linkstack_node));
if(!p_new)
{
return 0;
}
p_new->date=e;
p_new->next=plinkstack->top;
plinkstack->top=p_new;
plinkstack->count++;
return 1;
}
3、出栈
int linkstack_pop(pLinkstack plinkstack)
{
pLinkstack_node p=plinkstack->top;
if(p==NULL)
{
return 0;
}
plinkstack->top=p->next;
free(p);
plinkstack->count++;
return 1;
}
4、遍历
int linkstack_traverse(pLinkstack plinkstack)
{
pLinkstack_node p=plinkstack->top;
while(p!=NULL)
{
printf("%d\n",p->date);
p=p->next;
}
}