请设计并编码实现借用一个栈S将一个队列Q逆置 4.2实现提示: (1)建立一个队列; (2)输出该队列; (3)建立一个空栈S; (4)依次将队列元素全部出队,并逐个入栈; (5)依次将栈内的全部数据出栈,并逐个将出栈的数据插入队列中; (6)再次输出队列(已完成逆置)。 2.需求分析: 1) 程序功能:输入一个队列且将其逆置 2) 输入数据:abcdef 3) 输出数据:fedcba 4) 测试数据: abcdef 3.概要设计: 1) 逻辑结构:队列 2) 程序结构设计: main() initlist(Seqlist L); inputlist(Seqlist L); displist (Seqlist L); nameseeklist(Seqlist L); seeklist(Seqlist L); insertlist(Seqlist L); delectlist(Seqlist L); countlist(Seqlist L);请用C语言,输入的元素为字符型
时间: 2023-12-02 20:02:08 浏览: 71
以下是基于C语言的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
// 队列结构体
typedef struct {
char data[MAXSIZE];
int front, rear;
} Queue;
// 栈结构体
typedef struct {
char data[MAXSIZE];
int top;
} Stack;
// 初始化队列
void initQueue(Queue *q) {
q->front = q->rear = 0;
}
// 判断队列是否为空
int isEmpty(Queue q) {
return q.front == q.rear;
}
// 入队
void enQueue(Queue *q, char x) {
if ((q->rear + 1) % MAXSIZE == q->front) {
printf("队列已满\n");
return;
}
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAXSIZE;
}
// 出队
char deQueue(Queue *q) {
if (isEmpty(*q)) {
printf("队列为空\n");
return 0;
}
char x = q->data[q->front];
q->front = (q->front + 1) % MAXSIZE;
return x;
}
// 初始化栈
void initStack(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int isStackEmpty(Stack s) {
return s.top == -1;
}
// 入栈
void push(Stack *s, char x) {
if (s->top == MAXSIZE - 1) {
printf("栈已满\n");
return;
}
s->data[++s->top] = x;
}
// 出栈
char pop(Stack *s) {
if (isStackEmpty(*s)) {
printf("栈为空\n");
return 0;
}
return s->data[s->top--];
}
// 将队列Q逆置
void reverse(Queue *q) {
Stack s;
char x;
initStack(&s);
while (!isEmpty(*q)) {
x = deQueue(q);
push(&s, x);
}
while (!isStackEmpty(s)) {
x = pop(&s);
enQueue(q, x);
}
}
int main() {
Queue q;
char x;
initQueue(&q);
printf("请输入队列元素:\n");
while (scanf("%c", &x) != EOF) {
if (x == '\n') break;
enQueue(&q, x);
}
printf("原队列:\n");
while (!isEmpty(q)) {
printf("%c ", deQueue(&q));
}
printf("\n逆置后的队列:\n");
reverse(&q);
while (!isEmpty(q)) {
printf("%c ", deQueue(&q));
}
return 0;
}
```
示例输入:
```
abcdef
```
示例输出:
```
原队列:
a b c d e f
逆置后的队列:
f e d c b a
```
阅读全文
相关推荐
















