首页 > 试题广场 >

写出以下程序段的输出结果

[问答题]

写出以下程序段的输出结果(队列中的元素类型QElemType为char,EnQuence表示进队,DeQuence表示出队)

void main()
{
     Queue Q;
     char x='e',y='c';
     InitQueue(Q);
     EnQueue(Q,'h');
     EnQueue(Q,'r');
     EnQueue(Q,y);
     DeQueue(Q,x);
     EnQueue(Q,x);
     DeQueue(Q,x);
     EnQueue(Q,'a');
     while(!QueueEmpty(Q)) { 
        DeQueue(Q,y); 
        printf(y); 
    }
     printf(x);
}

要求画出进队、出队的过程。

发表于 2021-08-30 17:38:19 回复(0)
//
// Created by John on 2021/02/22.
// 循环数组队列
//
#include<iostream>
using namespace std;
#define MaxSize 50
template<class ElemType>struct SqQueue{
    ElemType data[MaxSize];
    int front,rear;
};

template<class ElemType>void InitQueue(SqQueue<ElemType> &Q){
    Q.rear = Q.front = 0;
}
template<class ElemType>bool isEmpty(SqQueue<ElemType> Q){
    if (Q.rear == Q.front) return true;
    else return false;
}
template<class ElemType>bool EnQueue(SqQueue<ElemType> &Q,ElemType x){
    if ((Q.rear + 1) % MaxSize == Q.front) return false;//判断队列是否满
    Q.data[Q.rear] = x;
    Q.rear = (Q.rear + 1) % MaxSize;
    return true;
}
template<class ElemType>bool DeQueue(SqQueue<ElemType>& Q,ElemType &x){
    if (Q.rear == Q.front) return false; //判断队列是否空
    x = Q.data[Q.front];
    Q.front = (Q.front + 1) % MaxSize;
    return true;
}

演示代码:
        SqQueue<char> Q;
        char x='e',y='c';
        InitQueue(Q);
        EnQueue(Q,'h');
        EnQueue(Q,'r');
        EnQueue(Q,y);
        DeQueue(Q,x);
        EnQueue(Q,x);
        DeQueue(Q,x);
        EnQueue(Q,'a');
        while(!isEmpty(Q)) {
            DeQueue(Q,y);
            cout<<y;
        }
        cout<<x;
结果:

发表于 2021-02-22 18:44:38 回复(0)
发表于 2020-04-29 17:17:55 回复(0)