数据结构(C语言编写完整可运行程序):设有队列Q、栈S,设计算法利用栈S将队列Q中的元素逆向输出
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/06 02:21:25
数据结构(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;}