c语言怎么实现栈结构
时间: 2024-10-05 07:04:01 浏览: 29
在C语言中,栈是一种线性的数据结构,通常通过数组或链表来实现。以下是两种常见的方法:
1. 数组实现栈:
```c
#include <stdio.h>
#define MAX_SIZE 100
typedef struct {
int top;
int data[MAX_SIZE]; // 定义栈的大小
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int isEmpty(Stack *s) {
return (s->top == - 1);
}
// 入栈操作(压入元素)
void push(Stack *s, int value) {
if (isFull(s)) {
printf("Stack Overflow\n");
return;
}
s->data[++(s->top)] = value;
}
// 出栈操作(弹出元素)
int pop(Stack *s) {
if (isEmpty(s)) {
printf("Stack Underflow\n");
return -1;
}
return s->data[s->top--];
}
// 获取栈顶元素但不删除
int peek(Stack *s) {
if (isEmpty(s)) {
printf("Stack is empty\n");
return -1;
}
return s->data[s->top];
}
```
2. 链表实现栈:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* next;
} Node;
typedef struct {
Node* top;
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = NULL;
}
// ... (其他栈操作函数类似,这里省略)
int main() {
Stack stack;
init(&stack);
// 使用栈操作...
return 0;
}
```
在上述代码中,`push`、`pop`和`peek`是基本的栈操作,它们分别用于插入元素到栈顶、移除栈顶元素以及查看栈顶元素但不删除。
阅读全文