采用c语言定义栈和队列的插入和删除算法实现相关的数据类型
时间: 2024-11-09 18:21:56 浏览: 27
在C语言中,我们可以手动定义栈和队列的数据结构,并为其提供基本的插入(push)和删除(pop)操作。以下是简单的实现:
**栈(Stack)**:
```c
#include <stdio.h>
#define MAX_SIZE 10
typedef struct Stack {
int top; // 栈顶元素的位置
int arr[MAX_SIZE]; // 存储栈内元素
} Stack;
// 插入(push)元素到栈顶
void push(Stack *s, int item) {
if (s->top == MAX_SIZE - 1) { // 判断是否已满
printf("Stack is full.\n");
return;
}
s->arr[++s->top] = item;
}
// 删除(pop)并返回栈顶元素
int pop(Stack *s) {
if (s-1) { // 检查栈是否为空
printf("Stack is empty.\n");
return -1; // 返回特殊值表示空栈
}
return s->arr[s->top--];
}
```
**队列(Queue)**:
```c
#include <stdio.h>
#define MAX_SIZE 10
typedef struct Queue {
int front; // 队首元素的位置
int rear; // 队尾元素的位置
int arr[MAX_SIZE]; // 存储队列内元素
} Queue;
// 初始化队列
void enqueue(Queue *q) {
q->front = -1;
q->rear = -1;
}
// 插入(enqueue)元素到队尾
void enqueue(Queue *q, int item) {
if (q->rear == MAX_SIZE - 1) {
printf("Queue is full.\n");
return;
}
q->arr[++q->rear] = item;
if (q->front == -1)
q->front = 0;
}
// 删除(dequeue)并返回队首元素
int dequeue(Queue *q) {
if (q->front == q->rear) { // 检查队列是否为空
printf("Queue is empty.\n");
return -1;
}
int item = q->arr[q->front++];
return item;
}
阅读全文