用的是c语言哈
#include <stdio.h>
#include <stdlib.h>
#define maxsize 100
typedef struct stack {
int sdata[maxsize];
int top;
int size;
} stack;
typedef struct queue {
int qdata[maxsize];
int front;
int rear;
int size;
} queue;
void initStack(stack* s) {
s->top = -1;
}
void initQueue(queue* q) {
q->rear = 0;
q->front = 0;
}
void pushStack(stack* s) {
int a;
printf("请输入插入栈中的元素个数!\n");
scanf_s("%d",&s->size);
printf("请输入插入的元素!\n");
scanf_s("%d", &a);
while (a != 99) {
s->sdata[s->top +1] = a;
s->top = s->top + 1;
scanf_s("%d", &a);
}
}
//void popStack(stack* s) {
// s->top = s->top - 1;
//}
void enqueue(queue* q, stack* s) {
printf("请输入插入队列中的元素个数!\n");
scanf_s("%d", &q->size);
while (q->rear < q->size && s->top != -1) {
q->qdata[q->rear] = s->sdata[s->top];
s->top = s->top - 1;
q->rear = q->rear + 1;
}
}
//void dequeue(queue* q) {
// while (q->front != q->rear) {
// q->front = q->front + 1;
// }
//}
void reverseStackUsingQueue(stack* s, queue* q) {
while (q->front != q->rear && s->top < q->size) {
s->sdata[s->top + 1] = q->qdata[q->front];
q->front = q->front + 1;
s->top = s->top + 1;
}
}
void printstack(stack* s) {
int i=0;
while (i <s->size) {
printf("%d", s->sdata[i]);
i++;
}
printf("\n");
}
int main() {
stack l;
queue p;
initStack(&l);
initQueue(&p);
pushStack(&l);
printf("现在堆栈中的元素为(从栈顶向栈底输出): \n");
printstack(&l);
enqueue(&p, &l);
printf("正在逆置中,请稍等!\n");
reverseStackUsingQueue(&l, &p);
printf("现在堆栈中的元素为(从栈顶向栈底输出): \n");
printstack(&l);
return 0;
}