请用c语言编写程序实现链栈的建立、入栈、出栈、输出的基本操作;
时间: 2024-10-16 18:10:49 浏览: 48
C语言进制装换,栈的入栈出栈
链栈是一种基于链表实现的栈数据结构,它通过节点之间的链接来进行元素的插入和删除操作。下面是一个简单的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链栈节点结构
typedef struct Node {
int data; // 节点存储的数据
struct Node* next; // 指向下一个节点的指针
} StackNode;
// 初始化链栈
StackNode* createStack() {
return (StackNode*)malloc(sizeof(StackNode));
}
// 入栈操作
void push(StackNode** top, int value) {
StackNode* newNode = createStack();
if (newNode == NULL) {
printf("内存分配失败!\n");
return;
}
newNode->data = value;
newNode->next = *top;
*top = newNode;
printf("元素 %d 入栈\n", value);
}
// 出栈操作
int pop(StackNode** top) {
if (*top == NULL) {
printf("栈为空,无法出栈\n");
return -1;
}
int value = (*top)->data;
StackNode* temp = *top;
*top = (*top)->next;
free(temp);
printf("元素 %d 出栈\n", value);
return value;
}
// 输出栈顶元素
void peek(StackNode* top) {
if (top != NULL) {
printf("栈顶元素: %d\n", top->data);
} else {
printf("栈为空\n");
}
}
// 测试链栈
int main() {
StackNode* stackTop = NULL;
push(&stackTop, 10);
push(&stackTop, 20);
push(&stackTop, 30);
peek(stackTop); // 输出栈顶: 30
pop(&stackTop); // 出栈并输出: 30
peek(stackTop); // 输出栈顶: 20
return 0;
}
```
在这个程序中,我们首先定义了一个链栈节点结构,然后实现了创建栈、入栈、出栈以及查看栈顶的操作。在`main`函数中展示了如何使用这些操作。
阅读全文