#include<stdio.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1
typedef int ElementType;
typedef int Status;
struct SNode
{
ElementType data;
struct SNode *Next;
};
typedef struct SNode *Stack;
/**
* 堆栈初始化,创建一个堆栈的头结点,指向null
* */
Stack CreateStack()
{
Stack S = (Stack)malloc(sizeof(struct SNode));
S->Next = NULL;
return S;
}
/**
* 判断堆栈是否为空
* */
Status IsEmpty(Stack S)
{
if(S->Next == NULL)
return OK;
else
return ERROR;
}
/**
* 将元素放入堆栈
* */
void Push(Stack S,ElementType item)
{
//1.先申请一块空间,存放数据
Stack q = (Stack)malloc(sizeof(struct SNode));
q->data = item;
//2.然后把新生成的结点指向栈顶
q->Next = S->Next;
//3.在把栈顶指向新生成的结点
S->Next = q;
}
/**
* 删除栈顶元素
* */
ElementType Pop(Stack S)
{
//1.判断堆栈是否为空
if(S->Next == NULL)
{
printf("堆栈满");
return ERROR;
}
//2。A->B->C
//删除A,把S->next 指向S->next->next;
Stack p = S->Next;
S->Next = p->Next;
//3.保存A中的数据用于返回
ElementType data = p->data;
//4.free(A)
free(p);
return data;
}
c语言堆栈链式存储结构
最新推荐文章于 2023-03-21 10:52:02 发布