6-19 数据结构考题 - 链队列

用链队列作存储结构,实现队列(元素为整型)的基本运算。

链队列的类型定义:

typedef int ElemType;
typedef struct QNode
{
    ElemType data;                    
    struct QNode *next;
}QNode;
typedef struct
{
    QNode *front;
    QNode *rear;
}LinkQueue;

下面给出了 链队列操作 函数的大部分内容,但缺少了一部分(以下划线____标识出来的部分)。

请先将以下代码中画横线的部分补充完整,然后将完整的函数GetHead,EnQueue,DeQueue 提交系统,完成题目要求的功能。

函数接口定义:

bool  GetHead (LinkQueue  Q,  ElemType  &e)
{    if ( ____ )
           {  cout<<"NULL"<       e= ____ ;
      return  true;
}

void  EnQueue(LinkQueue  &Q, ElemType  e)
{   QNode *p;
    p=new  QNode;
    p->data=e;   
    p->next=NULL;
    Q.rear->next= ____ ;
    Q.rear= ____ ;
}

bool  DeQueue(LinkQueue &Q,  ElemType &e)
{    QNode *p;
     if ( ____ )
     {  cout<<"NULL"<      p= ____ ;  
     e=p->data;
     Q.front->next= ____ ;
     if(Q.rear==p)  Q.rear=Q.front;
     delete p;
     return  true;
}

该函数中的参数说明:

  • LinkQueue &Q :链队列 Q
  • ElemType e : 用于存放入队或出队的数据元素 e

测试主程序样例:

int main()
{    
    LinkQueue Q;
    ElemType x,e;
    InitQNode(Q);
    cin>>x;
    while(x!=-1)
    {    
        EnQueue(Q,x);
        cin>>x;
    }
    cout<<"Head:";
    if(GetHead(Q,e))
            cout<     cout<<"Pop:";
    while(DeQueue(Q,e))
       cout<     return 0;
}

输入格式:

在一行输入若干个队列元素值,调用入队函数把输入的元素值入队,用−1表示输入结束(−1不属于队列)。

输出格式:

输出分两行:

第一行输出队头元素。如队列为空,输出NULL。

第二行依次输出出队元素,直到队列为空。元素间以空格分隔,队列为空时输出NULL。

输入样例:

1 3 5 7 9 -1

输出样例:

Head:1
Pop:1 3 5 7 9 NULL

输入样例:

-1

输出样例:

Head:NULL
Pop:NULL

 bool  GetHead (LinkQueue Q,ElemType  &e)
{
    if(Q.front==Q.rear){
        cout<<"NULL"<         return  false;
    }
    e=Q.front->next->data;
    return true;
}
void  EnQueue(LinkQueue  &Q, ElemType  e)
{
    QNode *p=new QNode;
    //QNode *P=(QNode *)malloc(sizeof(QNode));
    p->data=e;
    p->next=NULL;
    Q.rear->next=p;
    Q.rear=p;
}
bool  DeQueue(LinkQueue &Q,  ElemType &e)
{
    if(Q.front==Q.rear){
        cout<<"NULL"<         return false;
    }
    QNode *p=Q.front->next;
    e=p->data;
    Q.front->next=p->next;
    if(Q.rear==p){
        Q.rear=Q.front;
    }
    delete p;//free(p)
    return true;
}

你可能感兴趣的:(数据结构,算法)