用尾指针标识的单循环链表实现队列r
创始人
2024-04-08 10:12:48

问题描述 

【问题描述】

用尾指针标识的单循环链表实现队列的基本操作。

【输入形式】

输入若干个整数(以空格分隔,非整数结束输入),其中0表示做出队操作,不为0的整数为入队元素。

【输出形式】

若出队错误输出“error”;

若最后队列为空,则输出“empty”;

若最后队列非空,依次输出队列的全部元素。

【样例输入1】

1 0 2 0 0 3 0 0 0 a

【样例输出1】

error

【样例输入2】

1 0 2 0 3 0 a

【样例输出2】

empty

【样例输入3】

1 2 3 0 0 4 0 5 a

【样例输出3】

4 5

【评分标准】

补充代码完成程序功能,不得修改程序中其他函数。

程序设计 

#include
#include
#include

typedef int ElemType;

typedef struct QNode{
    ElemType data;
    struct QNode *next;
}QNode;
/*初始化队列*/
int InitQueue(QNode **rear)
{
    QNode* p=(QNode*)malloc(sizeof(QNode));
    if(!p)return 0;
    p->next=p;
   *rear=p;
    return 1;
    }
/*入队*/
int EnQueue(QNode **rear,ElemType e)
{    
     QNode *p=*rear;
     while(p->next!=*rear){
         p=p->next;
     }
     QNode *q=(QNode*)malloc(sizeof(QNode));
     q->data=e;
     q->next=*rear;
     p->next=q;
     return 1;
}

/*判断队列是否为空*/
int QueueEmpty(QNode *rear)
{
    if(rear->next==rear) return 1;
    else return 0;
}
/*出队*/
int DeQueue(QNode **rear,ElemType *e)
{
    if(QueueEmpty(*rear)==1) return 0;
    QNode *q=(*rear)->next;
    (*rear)->next=q->next;
    *e=q->data;
    free(q);
    return 1;
}

int main()
   {
        QNode *q;
        ElemType e;
        InitQueue(&q);
        while(scanf("%d",&e)==1)
        {
            if(e)
            {
                EnQueue(&q,e);
            }
            else
            {
                if(QueueEmpty(q))
                {
                    printf("error");
                    return 0;
                }
                else
                {
                    DeQueue(&q,&e);
                }
            }
        }
        if(QueueEmpty(q))
            printf("empty");
        else
        {
            while(!QueueEmpty(q))
            {
                DeQueue(&q,&e);
                printf("%d ",e);
            }
        }
        return 1;

相关内容

热门资讯

超有范的个性伤感说说 超级经典... 超有范的个性伤感说说  1、当爱己成往事时,是否还能记住彼此。  2、很多事都介于不说憋屈和说了矫情...
给你心灵以慰藉的爱情说说 触动... 给你心灵以慰藉的爱情说说  1、谢谢你,让我的寂寞有了寄托。  2、我不怕离别和伤害我只是怕空荡的心...
科森科技股价涨5.09%,红土... 2月13日,科森科技涨5.09%,截至发稿,报28.69元/股,成交4.08亿元,换手率2.63%,...
空间个性非主流伤感说说 非主流... 空间个性非主流伤感说说  1、我爱你,是我的事,与你无关。  2、围绕在你身边的人太多,阻挡了我爱你...
句句都入木三分的经典说说 句句... 句句都入木三分的经典说说  1、一个人炫耀什么,说明内心缺少什么。  2、失言就是一不小心说了实话。...