回 帖 发 新 帖 刷新版面

主题:菜鸟求救 数据结构题

假设以头结点的循环列表表示队列,并且只设一个指针指向队列为节点。试编程相应的队列初始化,入队列和出队列的算法!!!!

回复列表 (共3个回复)

沙发

以前看过类似的,现在忘记了。。









最近开发的。。
生物试剂 http://www.shijihe5.com/

板凳

路过~~~~

3 楼

我把单链队列的尾指针换成temp指针,使其始终指向倒数第二个结点,并使队列链的最后一个结点指向头结点,这样实现起来就很简单了,算法如下 不知是否合楼主要求
typedef struct QNode
{
    QElemType  data;
    struct QNode *next;
}QNode,*QueuePty;
typedef struct
{
    QueuePtr  front;//头结点
    QueuePtr  temp;
}LinkQueue;
Status InitQueue(LinkQueue &Q)
{
    Q.front=Q.temp=(QueuePty)malloc(sizeof(QNode));
    if(!Q.front) exit(OVERFLOW);
    Q.temp->next=front;//队列最后一个节点指向头结点
    return OK;
}
Status EnQueue(LinkQueue &Q,QElemType e)
{
    while(temp->next!=front)  temp=temp->next; //使temp指针始终指向倒数第二个结点
    p=(QueuePty)malloc(sizeof(QNode));
    if(!p)  exit(OVERFLOW);
    p->data=e; 
    p->next=front;
    temp->next=p;
    temp=p;
    return OK;
}
Status EnQueue(LinkQueue &Q,QElemType &e)
{
    while(temp->next!=front)  temp=temp->next; 
   if(Q.front->next==front) //队列中只有头结点
       return ERROR;
   p=front->next;
   Q.front->next=p->next;
   e=p->data;
   free(p)
       return OK;
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册