链队列的初始化,建立,插入,查找,删除。

来源:互联网 发布:百度文库软件 编辑:程序博客网 时间:2024/05/16 08:48
参考:http://www.cnblogs.com/newwy/archive/2010/10/10/1847463.html
代码 //////////////////////////////////////////////链队列的初始化,建立,插入,查找,删除。////Author:Wang Yong                            //    //Date:    2010.8.19                            //////////////////////////////////////////////#include <stdio.h>#include <stdlib.h>typedef int ElemType;////////////////////////////////////////////定义队列结点类型typedef struct Qnode{    ElemType data;    struct Qnode *next;} Qnode;///定义队列结点的头指针,为指针 typedef struct{    Qnode *front;    Qnode *rear;}LQueue,*LinkQueue; ////////////////////////////////////////////队列初始化LinkQueue LinkQueueInit(){    LinkQueue Q;    Qnode *P;    Q = (LinkQueue)malloc(sizeof(LQueue));//申请头,尾指针结点     P = (Qnode *)malloc(sizeof(Qnode));//申请头结点     P->next = NULL;    Q->front = Q->rear = P;    return Q; }///////////////////////////////////////////入队void LinkQueueEnter(LinkQueue Q,ElemType x){    Qnode *p;        p = (Qnode *)malloc(sizeof(Qnode));//申请新结点     p->data = x;    p->next = NULL;    Q->rear->next = p;        Q->rear = p;} ///////////////////////////////////////////出队ElemType LinkQueueOut(LinkQueue Q){    ElemType x;    Qnode *p;    if(Q->front != Q->rear)    {        p = Q->front->next;;        x = p->data;        Q->front->next = p->next;//移动头指针         free(p);        if(Q->front->next == NULL)//最后一个元素出队后,队空,修改队尾指针             Q->rear = Q->front;    }    else         return  0;    return x;} int main(){    LinkQueue lqueue;    lqueue = LinkQueueInit();    ElemType x;    printf("请输入入队列的元素:");    while(scanf("%d",&x) != EOF)    {        LinkQueueEnter(lqueue,x);    }    Qnode *p;        for(p = lqueue->front->next; p != lqueue->rear->next; p = p->next )        printf("%d ",p->data);    printf("出队列的结果为:");    while(lqueue->front!= lqueue->rear)    {                printf("%d ",LinkQueueOut(lqueue));    }        return 0;}

原创粉丝点击