Regiment soul 2020-11-01 10:58 采纳率: 0%
浏览 65

C语言链队列代码问题,大神帮忙改一下吧

#include
#include
typedef struct QNode{
QElemType data;
struct Qnode * next;
}Qnode,*QueuePtr;
typedef struct{
QueuePtr front;
QueuePtr rear ;

}LinkQueue;
Status InitQueue(LinkQueue&Q){
Q.front=q.rear=(QueuePtr)malloc(sizeof(QNode));
if(!Q.front)exit(OVERFLOW);
Q.front ->next = NULL;
return OK;
}
Status DestroyQueue(LinkQueue&Q){
while (Q.front){
Q.rear = Q.front->next;
free(Q.front);
Q.front =Q.rear;
}
return OK;
}
Status QueueEmpty(LinkQueue Q){
return(Q.front == Q.rear);

}
Status GetHead(LinkQueue Q, QElemType&e){
if(Q.front == Q.rear)return ERROR;
e =Q.front->next->data;
return OK;

}




  • 写回答

1条回答 默认 最新

  • 努力的小诚 2023-02-10 18:33
    关注

    仅供参考

    #include<stdio.h>
    #include<stdlib.h>
    
    // 定义队列元素类型
    typedef int QElemType;
    
    // 链式队列结点结构体
    typedef struct QNode{
        QElemType data;  // 数据域
        struct QNode *next;  // 指向下一个结点的指针
    }QNode, *QueuePtr;
    
    // 链式队列结构体
    typedef struct{
        QueuePtr front;  // 队头指针
        QueuePtr rear;  // 队尾指针
    }LinkQueue;
    
    // 初始化链式队列
    Status InitQueue(LinkQueue *Q){
        // 为队列分配空间
        Q->front = Q->rear = (QueuePtr)malloc(sizeof(QNode));
        // 如果分配空间失败,则退出程序
        if (!Q->front)
            exit(OVERFLOW);
        Q->front->next = NULL;  // 初始化队头指针的next指向NULL
        return OK;
    }
    
    // 销毁链式队列
    Status DestroyQueue(LinkQueue *Q){
        // 遍历队列,释放每个结点的空间
        while (Q->front){
            Q->rear = Q->front->next;
            free(Q->front);
            Q->front = Q->rear;
        }
        return OK;
    }
    
    // 判断链式队列是否为空
    Status QueueEmpty(LinkQueue Q){
        // 队头指针等于队尾指针,则队列为空
        return (Q.front == Q.rear);
    }
    
    // 获取链式队列的队头元素
    Status GetHead(LinkQueue Q, QElemType *e){
        // 如果队列为空,则返回ERROR
        if (Q.front == Q.rear)
            return ERROR;
        *e = Q.front->next->data;  // 获取队头元素
        return OK;
    }
    
    评论

报告相同问题?