#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
/*
**栈的链式存储结构,简称栈链
**栈因为只是栈顶来做插入和删除操作,所以比较好的方法
**就是将栈顶放在单链表的头部,栈顶指针和单链表的头指针和二为一
*/
typedef int ElemType;
typedef int Status;
typedef struct StackNode
{
ElemType data;
struct StackNode *next;
}StackNode,*LinkStackPtr;
typedef struct LinkStack
{
LinkStackPtr top; /*top指针*/
int count; /*栈元素计数器*/
}LinkStack;
/*
**进栈操作
*/
Status Push(LinkStack *s,ElemType e)
{
LinkStackPtr p=(LinkStackPtr)malloc(sizeof(StackNode));
p->data=e;
p->next=s->top;
s->top=p;
s->count++;
return OK;
}
/*
**判断是否为空栈
*/
Status StackEmpty(LinkStack *s)
{
if(s->top==NULL)
return OK;
else
return ERROR;
}
/*
**出栈操作
*/
Status Pop(LinkStack *s,ElemType *e)
{
LinkStackPtr p;
if(StackEmpty(s))//判断是否为空栈
return ERROR;
*e=s->top->data;
p=s->top;
s->top=s->top->next;
free(p);
s->count--;
return OK;
}
int main()
{
printf("Hello world!\n");
return 0;
}
C语言栈的链式存储结构
最新推荐文章于 2023-01-15 23:03:09 发布