数据结构栈与队列代码c语言实现
时间: 2023-06-25 08:08:18 浏览: 142
栈的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int top;
} Stack;
void init(Stack *s) { // 初始化栈
s->top = -1;
}
int push(Stack *s, int x) { // 入栈操作
if (s->top == MAXSIZE - 1) {
printf("Stack overflow.\n");
return 0;
}
s->data[++(s->top)] = x;
return 1;
}
int pop(Stack *s) { // 出栈操作
if (s->top == -1) {
printf("Stack underflow.\n");
return 0;
}
return s->data[(s->top)--];
}
int top(Stack *s) { // 返回栈顶元素
if (s->top == -1) {
printf("Stack underflow.\n");
return 0;
}
return s->data[s->top];
}
int empty(Stack *s) { // 判断栈是否为空
return s->top == -1;
}
```
队列的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int front, rear;
} Queue;
void init(Queue *q) { // 初始化队列
q->front = q->rear = 0;
}
int enqueue(Queue *q, int x) { // 入队操作
if ((q->rear + 1) % MAXSIZE == q->front) {
printf("Queue overflow.\n");
return 0;
}
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAXSIZE;
return 1;
}
int dequeue(Queue *q) { // 出队操作
if (q->front == q->rear) {
printf("Queue underflow.\n");
return 0;
}
int x = q->data[q->front];
q->front = (q->front + 1) % MAXSIZE;
return x;
}
int empty(Queue *q) { // 判断队列是否为空
return q->front == q->rear;
}
```
以上是基本的栈和队列的实现,可以根据需要进行修改和扩展。
阅读全文