链栈c语言,显示函数
时间: 2024-12-17 21:50:47 浏览: 1
XML-Schema-XML,链栈c语言源码,c语言
链栈在C语言中通常会使用结构体表示节点,包含数据域和指针域。这里是一个简单的链栈实现,包括了插入(push)、删除(pop)和查看栈顶元素(top)的函数:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链栈节点结构
typedef struct Node {
int data;
struct Node* next;
} Node;
// 初始化链栈
struct Node* createStack() {
return NULL;
}
// 将元素推入栈顶
void push(struct Node** top, int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode == NULL) {
printf("Memory allocation failed.\n");
exit(EXIT_FAILURE);
}
newNode->data = value;
newNode->next = *top;
*top = newNode;
}
// 从栈顶弹出元素
int pop(struct Node** top) {
if (*top == NULL) {
printf("Stack is empty.\n");
return -1; // 返回错误码
}
int value = (*top)->data;
Node* temp = *top;
*top = (*top)->next;
free(temp); // 释放内存
return value;
}
// 获取栈顶元素,但不删除
int peek(struct Node* top) {
if (top == NULL) {
printf("Stack is empty.\n");
return -1; // 返回错误码
}
return top->data;
}
// 测试链栈
int main() {
struct Node* stackTop = createStack();
push(&stackTop, 5);
push(&stackTop, 3);
printf("Peek element: %d\n", peek(stackTop)); // 输出: 3
printf("Popped element: %d\n", pop(&stackTop)); // 输出: 3
printf("Peek again: %d\n", peek(stackTop)); // 输出: 5
return 0;
}
```
在这个代码中,`createStack()` 函数用于初始化一个空栈,`push()` 函数用于将元素压入栈顶,`pop()` 函数用于从栈顶弹出元素,`peek()` 函数则只查看栈顶元素但不移动。
阅读全文