#include "stdio.h"
#include "stdlib.h"
#define OK true
#define ERROR false
typedef int Status;
typedef int ElemType;
typedef struct StackNode
{
ElemType data;
struct StackNode *next;
}StackNode, *LinkStackPtr;
typedef struct LinkStack
{
LinkStackPtr top;
int count;
}LinkStack;
void InitLinkStack(LinkStack *S)
{
S->top = (LinkStackPtr)malloc(sizeof(StackNode));
S->top->next = NULL;
S->count = 0;
}
Status Push(LinkStack *S, ElemType e)
{
LinkStackPtr s = (LinkStackPtr)malloc(sizeof(StackNode));
s->data = e;
s->next = S->top;
S->top = s;
S->count++;
return OK;
}
Status Pop(LinkStack *S, ElemType *e)
{
LinkStackPtr p;
if (S->count == 0)
return ERROR;
*e = S->top->data;
p = S->top;
S->top = S->top->next;
free(p);
S->count--;
return OK;
}
void PrintLinkStack(LinkStack *S)
{
LinkStackPtr p = S->top;
while (p->next != NULL)
{
printf("%d\n", p->data);
p = p->next;
}
}
int main()
{
LinkStack S;
InitLinkStack(&S);
Push(&S, 1);
Push(&S, 2);
Push(&S, 3);
Push(&S, 4);
Push(&S, 5);
PrintLinkStack(&S);
int e;
Pop(&S, &e);
printf("出栈元素:%d\n", e);
PrintLinkStack(&S);
system("pause");
return 0;
}
链栈(C语言)
最新推荐文章于 2022-06-15 21:33:39 发布