题目:
利用链栈逆置链队列。
算法中文描述:
1、 建立一个队列,在建队列的同时,采用数组保存队列中的元素;
2、 输出该队列,由于在此处如果调用print()函数输出队列元素的话会导致队列的队头和队尾指针都指向队尾,这样使得后面的逆置等操作无法实现,因此采用顺序输出数组元素的方法来输出队列元素,这也是步骤1中用数组保存队列元素的目的之所在;
3、 建立一个空栈top;
4、 依次将队列元素全部出队,并逐个入栈;
5、 依次将栈内的全部元素出栈,并逐个将出栈的元素入队;
6、 再次输出队列,即完成队列逆置。
#include <stdio.h>
#include <stdlib.h>
#define null 0
#define maxsize 100
typedef int datatype;
int a[maxsize];
typedef struct node //定义链栈节点类型
{
datatype data; //数据域
struct node *next; //指针域
}Linkstack;
typedef struct qnode //定义队列节点值类型
{
datatype data;
struct qnode *next;
}qnode;
typedef struct //定义指向队列的队列指针
{
qnode *front;
qnode *rear;
}Linkqueue;