栈与队列的c语言实现
时间: 2024-11-22 21:44:41 浏览: 5
栈和队列是数据结构中常用的两种线性表,它们的主要区别在于元素的添加和删除方式。
**栈(Stack)实现**:
栈是一种后进先出(LIFO,Last In First Out)的数据结构。典型的C语言实现可以使用数组或链表。例如,使用数组:
```c
#include <stdio.h>
#define MAX_SIZE 50
typedef struct {
int top;
int stack[MAX_SIZE];
} Stack;
void push(Stack *s, int item) {
if (s->top == MAX_SIZE - 1) {
printf("Stack overflow.\n");
return;
}
s->stack[++s->top] = item;
}
int pop(Stack *s) {
if (s->top == -1) {
printf("Stack underflow.\n");
return -1;
}
return s->stack[s->top--];
}
```
**队列(Queue)实现**:
队列则是先进先出(FIFO,First In First Out)的数据结构。同样可以用数组或链表实现,如数组队列:
```c
#include <stdio.h>
#define MAX_SIZE 50
typedef struct {
int front, rear;
int queue[MAX_SIZE];
} Queue;
void enqueue(Queue *q, int item) {
if ((q->rear + 1) % MAX_SIZE == q->front) {
printf("Queue overflow.\n");
return;
}
q->queue[q->rear++] = item;
}
int dequeue(Queue *q) {
if (q->front == q->rear) {
printf("Queue underflow.\n");
return -1;
}
return q->queue[q->front++];
}
```
阅读全文