如何在C语言中实现一个链式栈,并展示入栈和出栈操作的代码示例?
时间: 2024-10-28 13:05:15 浏览: 52
在C语言中实现一个链式栈,首先需要定义栈节点的数据结构,然后实现栈的基本操作,包括创建栈、入栈(Push)和出栈(Pop)。以下是一个简单的示例代码:
参考资源链接:[清华大学严蔚敏版《数据结构》第二版习题解析](https://wenku.csdn.net/doc/4rs2xs6mg6?spm=1055.2569.3001.10343)
首先,定义链式栈的节点和栈结构:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链栈的节点结构体
typedef struct StackNode {
int data;
struct StackNode *next;
} StackNode, *LinkStackPtr;
// 定义链栈结构体
typedef struct LinkStack {
LinkStackPtr top;
int count;
} LinkStack;
// 初始化栈
void initStack(LinkStack *s) {
s->top = NULL;
s->count = 0;
}
// 入栈操作
int push(LinkStack *s, int e) {
LinkStackPtr temp = (LinkStackPtr)malloc(sizeof(StackNode));
if (temp == NULL) {
return 0; // 内存分配失败
}
temp->data = e;
temp->next = s->top;
s->top = temp;
s->count++;
return 1; // 入栈成功
}
// 出栈操作
int pop(LinkStack *s, int *e) {
if (s->top == NULL) {
return 0; // 栈为空
}
LinkStackPtr temp = s->top;
*e = temp->data;
s->top = temp->next;
free(temp);
s->count--;
return 1; // 出栈成功
}
// 主函数,演示入栈和出栈操作
int main() {
LinkStack s;
initStack(&s);
// 入栈操作
push(&s, 10);
push(&s, 20);
push(&s, 30);
int e;
// 出栈操作
while (pop(&s, &e)) {
printf(
参考资源链接:[清华大学严蔚敏版《数据结构》第二版习题解析](https://wenku.csdn.net/doc/4rs2xs6mg6?spm=1055.2569.3001.10343)
阅读全文