有头结点
#include "stdio.h"
#include "stdlib.h"
typedef struct LinkStack
{
int data;
struct LinkStack *next;
}linkstack;
int initStack(linkstack *&st)
{
st=(linkstack *)malloc(sizeof(linkstack));
st->next=NULL;
return 1;
}
int isStackEmpty(linkstack *st)
{
if(st->next==NULL)
{
printf("this is empty stack\n");
return 1;
}
return 0;
}
int push(linkstack *st,int data)
{
linkstack *p;
p=(linkstack *)malloc(sizeof(linkstack));
p->data=data;
p->next=NULL;
p->next=st->next;
st->next=p;
return 1;
}
int pop(linkstack *st,int &e)
{
linkstack *p;
if(isStackEmpty(st)==1)
return 0;
p=st->next;
e=p->data;
st->next=p->next;
free(p);
return 1;
}
int showStack(linkstack *st)
{
linkstack *p;
p=st->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
int main()
{
linkstack *st;
int e;
initStack(st);
push(st,10);
push(st,9);
showStack(st);
pop(st,e);
pop(st,e);
printf("%d ",e);
showStack(st);
pop(st,e);
return 1;
}
无头结点
#include "stdio.h"
#include "stdlib.h"
typedef struct LinkStack
{
int data;
struct LinkStack *next;
}linkstack;
int isStackEmpty(linkstack *st)
{
if(st==NULL)
{
printf("this is empty stack\n");
return 1;
}
return 0;
}
int push(linkstack *&st,int data)
{
linkstack *p;
p=(linkstack *)malloc(sizeof(linkstack));
p->data=data;
p->next=NULL;
if(st==NULL)
st=p;
else
{
p->next=st;
st=p;
}
return 1;
}
int pop(linkstack *&st,int &e)
{
linkstack *p;
if(isStackEmpty(st)==1)
return 0;
p=st;
e=p->data;
st=p->next;
free(p);
return 1;
}
int showStack(linkstack *st)
{
linkstack *p;
p=st;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
int main()
{
linkstack *st=NULL;
int e;
push(st,10);
push(st,9);
showStack(st);
pop(st,e);
pop(st,e);
printf("%d ",e);
showStack(st);
pop(st,e);
return 1;
}