#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *pNext;
}NODE, *PNODE;
typedef struct Stack {
PNODE pTop;
PNODE pBottom;
}STACK, *PSTACK;
void init(PSTACK pS) {
pS->pTop = (PNODE)malloc(sizeof(NODE));
if(NULL == pS->pTop) {
printf("动态内存分配失败!\n");
exit(-1);
}
else {
pS->pBottom = pS->pTop;
pS->pTop->pNext = NULL;
}
}
void push(PSTACK pS, int val){
PNODE pNew = (PNODE)malloc(sizeof(NODE));
pNew->data = val;
pNew->pNext = pS->pTop;
pS->pTop = pNew;
}
bool empty(PSTACK pS) {
if(pS->pTop == pS->pBottom)
return true;
else
return false;
}
bool pop(PSTACK pS, int* pVal) {
if(empty(pS)) {
return false;
}
else {
PNODE r = pS->pTop;
*pVal = r->data;
pS->pTop = r->pNext;
free(r);
r = NULL;
return true;
}
}
void traverse(PSTACK pS) {
PNODE p = pS->
栈的基本实现(入栈,出栈,清空,判断是否为空)
最新推荐文章于 2023-07-29 17:59:13 发布
本文介绍了如何使用C语言实现栈的数据结构,包括初始化、入栈(push)、出栈(pop)、判断栈是否为空(empty)和清空栈(clear)的操作。通过示例代码展示了具体的实现过程,并提供了测试用例进行验证。
摘要由CSDN通过智能技术生成