码迷,mamicode.com
首页 > 其他好文 > 详细

单链队列的实现

时间:2017-10-24 00:01:37      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:logs   链队列   类型   建立   free   main   maxsize   init   链队列的实现   

我把调通的完整代码放在下面

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define MAXSIZE 100
#define ElemType int
typedef struct qnode{
    ElemType data;
    struct qnode *next;
}DataNode;

typedef struct{
    DataNode *head;
    DataNode *rear;
}LinkQuNode;

void InitQueue(LinkQuNode *q)
{
    q->head=q->rear = (DataNode *)malloc(sizeof(DataNode));
    q->head->next =NULL;
}
void enQueue(LinkQuNode &q,ElemType e)
{
    DataNode *p;
    p= (DataNode *)malloc(sizeof(DataNode));
    p->data = e;
    p->next = NULL;
     q.rear->next = p;
        q.rear = p;
}

int deQueue(LinkQuNode &q,ElemType &e)
{   DataNode *p;
        if(q.head==q.rear)
         return 0;
         p = q.head->next;
         e = p->data;
         q.head->next = p->next;
         if(q.rear == p)
            q.rear = q.head;
        free(p);
        return 1;

}
int main(){
    LinkQuNode Q;
    int e;
    int i;
    InitQueue(&Q);
     for(i=0;i<5;i++)
        enQueue(Q, i);
    for( i=0; i<5;i++){
        deQueue(Q,e);
        printf("%d",e);
    }


    return 0;
}

这个队列最讲究的地方就是初始化了,别看简单,还是有一个陷阱呢,今天掉下去爬了好久没爬上来

head和rear都是指向DataNode类型的指针,初始化的时候建立了一个DataNode结点让head和rear都指向它

增加结点的时候在队尾rear后面增加

删除结点的时候在队头后删除,注意只有一个结点的情况,为了避免rear丢失,把head的值赋给rear

单链队列的实现

标签:logs   链队列   类型   建立   free   main   maxsize   init   链队列的实现   

原文地址:http://www.cnblogs.com/zhangxiran/p/7719721.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!