栈的定义以及操作代码c语言
时间: 2023-05-30 16:05:54 浏览: 116
栈是一种线性数据结构,它具有后进先出(LIFO)的特点。栈可以用数组或链表实现。
栈的操作包括入栈(push)、出栈(pop)、查看栈顶元素(peek)、判断栈是否为空(isEmpty)等。
下面是栈的操作代码(基于数组实现):
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
// 栈结构体
typedef struct {
int top; // 栈顶指针
int data[MAX_SIZE]; // 栈元素
} Stack;
// 初始化栈
void initStack(Stack *s) {
s->top = -1;
}
// 入栈
void push(Stack *s, int x) {
if (s->top == MAX_SIZE - 1) {
printf("Error: Stack is full!\n");
return;
}
s->top++;
s->data[s->top] = x;
}
// 出栈
int pop(Stack *s) {
if (s->top == -1) {
printf("Error: Stack is empty!\n");
return -1;
}
int x = s->data[s->top];
s->top--;
return x;
}
// 查看栈顶元素
int peek(Stack *s) {
if (s->top == -1) {
printf("Error: Stack is empty!\n");
return -1;
}
return s->data[s->top];
}
// 判断栈是否为空
int isEmpty(Stack *s) {
return s->top == -1;
}
int main() {
Stack s;
initStack(&s);
push(&s, 1);
push(&s, 2);
push(&s, 3);
printf("%d\n", peek(&s));
pop(&s);
printf("%d\n", peek(&s));
pop(&s);
printf("%d\n", peek(&s));
pop(&s);
printf("%d\n", isEmpty(&s));
return 0;
}
```
阅读全文