首页 > 代码库 > C语言 链队列基本操作

C语言 链队列基本操作

C语言链队列基本操作

#include <stdio.h>#include <stdlib.h>#include <malloc.h>/*    C语言链队列基本操作    2014年7月11日10:11:41*/typedef int qType;typedef struct node{    qType data;    struct node *pNext;}Node,*pNode;typedef struct queue{    pNode front;    pNode rear;}linkQ,*pLinkQ;//初始化队列void initQueue(linkQ *);//入队void enQueue(linkQ *,qType);//出队void deQueue(linkQ *,qType *);int main(){    linkQ q;    qType data,reval;    int i;    initQueue(&q);    printf("请输入5个整数:");    for(i=0; i<5; i++)    {        scanf("%d",&data);        enQueue(&q,data);    }    printf("\n输出结果为:");    while(q.front != q.rear)    {        deQueue(&q,&reval);        printf("%d ", reval);    }    printf("\n");    return 0;}void initQueue(linkQ * q){    q->front = q->rear = (pNode)malloc(sizeof(Node));    if(!q->front)    {        exit(-1);    }    q->front->pNext = NULL;    return ;}void enQueue(linkQ * q,qType data){    pNode pNew;    pNew = (pNode)malloc(sizeof(Node));    if(!pNew)    {        exit(-1);    }    pNew->data =http://www.mamicode.com/ data;    pNew->pNext = NULL;    q->rear->pNext = pNew;    q->rear = pNew;    return ;}void deQueue(linkQ * q,qType *val){    pNode pNew;    if(q->front == q->rear)    {        exit(-1);    }    pNew = q->front->pNext;    *val = pNew->data;    q->front->pNext = pNew->pNext;    if(q->rear == pNew)    {        q->rear = q->front;    }    free(pNew);    return ;}
View Code

 代码二

#include <stdio.h>#include <stdlib.h>#include <malloc.h>/*    C语言链队列基本操作    2014年7月11日10:11:41*/typedef int qType;typedef struct node{    qType data;    struct node *pNext;}Node,*pNode;typedef struct queue{    pNode front;    pNode rear;}linkQ,*pLinkQ;//初始化队列void initQueue(pLinkQ);//入队void enQueue(pLinkQ,qType);//出队void deQueue(pLinkQ,qType *);int main(){    linkQ q;    qType data,reval;    int i;    initQueue(&q);    printf("请输入5个整数:");    for(i=0; i<5; i++)    {        scanf("%d",&data);        enQueue(&q,data);    }    printf("\n输出结果为:");    while(q.front != q.rear)    {        deQueue(&q,&reval);        printf("%d ", reval);    }    printf("\n");    return 0;}void initQueue(pLinkQ q){    q->front = q->rear = (pNode)malloc(sizeof(Node));    if(!q->front)    {        exit(-1);    }    q->front->pNext = NULL;    return ;}void enQueue(pLinkQ q,qType data){    pNode pNew;    pNew = (pNode)malloc(sizeof(Node));    if(!pNew)    {        exit(-1);    }    pNew->data =http://www.mamicode.com/ data;    pNew->pNext = NULL;    q->rear->pNext = pNew;    q->rear = pNew;    return ;}void deQueue(pLinkQ q,qType *val){    pNode pNew;    if(q->front == q->rear)    {        exit(-1);    }    pNew = q->front->pNext;    *val = pNew->data;    q->front->pNext = pNew->pNext;    if(q->rear == pNew)    {        q->rear = q->front;    }    free(pNew);    return ;}
View Code