用C语言实现栈和队列的代码
时间: 2023-02-16 20:42:50 浏览: 64
栈和队列是常见的数据结构。下面是用 C 语言实现栈和队列的代码:
栈:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
/* 定义栈的数据结构 */
typedef struct {
int data[MAX_SIZE]; // 存储数据的数组
int top; // 栈顶指针
} Stack;
/* 初始化栈 */
void stack_init(Stack *stack) {
stack->top = -1; // 初始化栈顶指针
}
/* 判断栈是否为空 */
int stack_is_empty(Stack *stack) {
return stack->top == -1;
}
/* 判断栈是否已满 */
int stack_is_full(Stack *stack) {
return stack->top == MAX_SIZE - 1;
}
/* 入栈 */
void stack_push(Stack *stack, int value) {
if (stack_is_full(stack)) {
printf("Error: stack is full.\n");
return;
}
stack->data[++stack->top] = value; // 先将栈顶指针加 1,再将数据存入栈中
}
/* 出栈 */
int stack_pop(Stack *stack) {
if (stack_is_empty(stack)) {
printf("Error: stack is empty.\n");
return -1;
}
return stack->data[stack->top--]; // 先将栈顶指针减 1,再将数据取出
}
/* 获取栈顶元素 */
int stack_top(Stack *stack) {
if (stack_is_empty(stack)) {
printf("Error: stack is empty.\n");
return -1;
}
return stack->data[stack->top];
}
int main(void) {
Stack stack;
stack_init(&stack); // 初始化栈
stack_push(&stack, 1); // 入栈
stack_push(&stack, 2);
stack_push(&stack, 3);
printf("%d\n", stack_top(&stack)); // 输出栈顶元素:3
printf("%d\n", stack_pop(&stack)); // 出栈:3
printf("%d\n", stack_pop(&stack)); //
阅读全文