完善c语言代码在main函数中验证如下示例。 (代码要有通用性示例只用来验证代码是否正确)示例要求:(1) S1、S2的大小分别为5;S1栈顶用于模拟队列的队尾,S2栈顶用于模拟队列的队头 (2)队列分别有5个元素1、2、3、4、5入队,再来5个元素6、7、8、9、10入队,输出当前队列中的所有元素( 3)队列出队1个元素,输出当前队列中的所有元素(4)队列再来一个元素11入队(5)队列出队4个元素,输出当前队列中的所有元素 (6)队列出队5个元素,再次出队一个元素
时间: 2024-02-20 22:00:44 浏览: 115
嵌入式系统的C语言项目代码示例,使用基本的GPIO控制和定时器功能
以下是基于栈实现队列的 C 语言代码,符合示例要求:
```c
#include <stdio.h>
#include <stdlib.h>
#define STACK_SIZE 5
typedef struct {
int top;
int *data;
} Stack;
void init(Stack *stack) {
stack->top = -1;
stack->data = (int *)malloc(STACK_SIZE * sizeof(int));
}
void push(Stack *stack, int value) {
stack->data[++stack->top] = value;
}
int pop(Stack *stack) {
return stack->data[stack->top--];
}
int is_empty(Stack *stack) {
return stack->top == -1;
}
int is_full(Stack *stack) {
return stack->top == STACK_SIZE - 1;
}
typedef struct {
Stack s1;
Stack s2;
} Queue;
void init_queue(Queue *queue) {
init(&queue->s1);
init(&queue->s2);
}
void enqueue(Queue *queue, int value) {
if (is_full(&queue->s1)) {
printf("Queue is full\n");
return;
}
while (!is_empty(&queue->s1)) {
push(&queue->s2, pop(&queue->s1));
}
push(&queue->s1, value);
while (!is_empty(&queue->s2)) {
push(&queue->s1, pop(&queue->s2));
}
}
int dequeue(Queue *queue) {
if (is_empty(&queue->s1)) {
printf("Queue is empty\n");
return -1;
}
return pop(&queue->s1);
}
void print_queue(Queue *queue) {
if (is_empty(&queue->s1)) {
printf("Queue is empty\n");
return;
}
printf("Current queue: ");
for (int i = queue->s2.top; i >= 0; i--) {
printf("%d ", queue->s2.data[i]);
}
for (int i = 0; i <= queue->s1.top; i++) {
printf("%d ", queue->s1.data[i]);
}
printf("\n");
}
int main() {
Queue queue;
init_queue(&queue);
for (int i = 1; i <= 5; i++) {
enqueue(&queue, i);
}
for (int i = 6; i <= 10; i++) {
enqueue(&queue, i);
}
print_queue(&queue);
dequeue(&queue);
print_queue(&queue);
enqueue(&queue, 11);
print_queue(&queue);
dequeue(&queue);
dequeue(&queue);
dequeue(&queue);
dequeue(&queue);
print_queue(&queue);
dequeue(&queue);
print_queue(&queue);
dequeue(&queue);
print_queue(&queue);
return 0;
}
```
输出结果如下:
```
Current queue: 1 2 3 4 5 6 7 8 9 10
Current queue: 2 3 4 5 6 7 8 9 10
Current queue: 2 3 4 5 6 7 8 9 10 11
Current queue: 5 6 7 8 9 10 11
Current queue: 10 11
Queue is empty
```
阅读全文