c语言输入奇数入队偶数出队
时间: 2024-11-28 13:11:16 浏览: 5
在 C 语言中,实现一个队列结构,其中奇数元素入队(enqueue),偶数元素出队(dequeue),你可以使用数组作为队列的底层数据结构,同时维护两个指针,一个指向队头,另一个指向队尾。这里我们假设队列的大小足够大。
首先,你需要有队列的声明和初始化,比如:
```c
#define MAX_SIZE 100 // 队列最大容量
typedef struct {
int queue[MAX_SIZE]; // 队列存储
int front; // 队头索引
int rear; // 队尾索引
} Queue;
```
然后定义函数 `enqueue` 和 `dequeue`:
```c
void enqueue(Queue *q, int value) {
if ((q->rear + 1) % 2 == 0 && q->rear < MAX_SIZE - 1) { // 如果队尾是偶数并且未满
q->rear++; // 向后移动队尾
q->queue[q->rear] = value; // 插入值
} else {
printf("Queue is full or contains only even numbers.\n"); // 队列已满或只有偶数
}
}
int dequeue(Queue *q) {
if (q->front != q->rear) { // 队列非空
if ((q->front + 1) % 2 != 0) { // 如果队头是奇数
int result = q->queue[q->front]; // 提取并返回值
q->front++; // 移动队头
return result;
} else {
printf("Dequeue from an empty queue with even numbers.\n"); // 只能从奇数位置出队
return -1; // 返回错误代码
}
} else {
printf("Queue is empty.\n"); // 队列为空
return -1; // 返回错误代码
}
}
```
请注意,这个设计假设队列总是先进先出(FIFO),并且只处理奇数入队偶数出队的情况。在实际应用中,如果需要处理更复杂的情况,可能需要对队列内部结构做相应调整。
阅读全文