数据结构(C语言编写完整可运行程序):设有队列Q、栈S,设计算法利用栈S将队列Q中的元素逆向输出
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/17 08:09:40
![数据结构(C语言编写完整可运行程序):设有队列Q、栈S,设计算法利用栈S将队列Q中的元素逆向输出](/uploads/image/z/88561-1-1.jpg?t=%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%EF%BC%88C%E8%AF%AD%E8%A8%80%E7%BC%96%E5%86%99%E5%AE%8C%E6%95%B4%E5%8F%AF%E8%BF%90%E8%A1%8C%E7%A8%8B%E5%BA%8F%EF%BC%89%EF%BC%9A%E8%AE%BE%E6%9C%89%E9%98%9F%E5%88%97Q%E3%80%81%E6%A0%88S%2C%E8%AE%BE%E8%AE%A1%E7%AE%97%E6%B3%95%E5%88%A9%E7%94%A8%E6%A0%88S%E5%B0%86%E9%98%9F%E5%88%97Q%E4%B8%AD%E7%9A%84%E5%85%83%E7%B4%A0%E9%80%86%E5%90%91%E8%BE%93%E5%87%BA)
数据结构(C语言编写完整可运行程序):设有队列Q、栈S,设计算法利用栈S将队列Q中的元素逆向输出
数据结构(C语言编写完整可运行程序):设有队列Q、栈S,设计算法利用栈S将队列Q中的元素逆向输出
数据结构(C语言编写完整可运行程序):设有队列Q、栈S,设计算法利用栈S将队列Q中的元素逆向输出
这是我帮你写的代码,
# include
# include
# include
# define size 6
typedef struct Node
{
int data;
struct Node *pNext;
}NODE,*PNODE;
struct stack
{
PNODE ptop;
};
struct Queue
{
int *pBase;
int front;
int rear;
};
void init_s(stack *);
void init_q(Queue *);
void Enqueue(Queue *,int);
void OutQpushS(Queue *,stack *);
void PopOut(stack *,Queue *);
void Out(Queue *);
int main(void)
{
stack S;//建立栈S
init_s(&S);
Queue Q;//建立循环队列Q init_q(&Q);
Enqueue(&Q,1);
Enqueue(&Q,2);
Enqueue(&Q,3);
printf("逆置后对列中的元素是\n");
OutQpushS(&Q,&S);//出对入栈
PopOut(&S,&Q);//出栈并入队
Out(&Q);//对Q出对
return 0;}
void init_s(stack *pS)
{
pS->ptop = NULL;
}
void init_q(Queue *pQ)
{
pQ->pBase = (int *)malloc(sizeof(int) * size);
if (pQ->pBase == NULL)
{
printf("动态内存分配失败!");
exit(-1);
}
pQ->front = pQ->rear = 0;}
void Enqueue(Queue * pQ,int val)
{
pQ->rear = (pQ->rear + 1) % size;
pQ->pBase[pQ->rear] = val;}
void OutQpushS(Queue *pQ,stack *pS)
{
while (pQ->front != pQ->rear)
{
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if (pNew == NULL)
{
printf("动态内存分配失败!\n");
exit(-1);
}
pQ->front = (pQ->front + 1) % size;
pNew->data = pQ->pBase[pQ->front];
pNew->pNext = pS->ptop;
pS->ptop = pNew;
}
}
void PopOut(stack *pS,Queue *pQ)
{
while (pS->ptop != NULL)
{
pQ->rear = (pQ->rear + 1) % size;
pQ->pBase[pQ->rear]= pS->ptop->data;
pS->ptop = pS->ptop->pNext;
}
}
void Out(Queue *pQ)
{
while (pQ->front != pQ->rear)
{
pQ->front = (pQ->front + 1) % size;
printf("%d\n",pQ->pBase[pQ->front]);
}
return;}