zoukankan      html  css  js  c++  java
  • 队列的实现

    #include<stdlib.h>
    #include<string.h>
    #include<stdio.h>
    
    typedef int Item;
    typedef struct node* PNode;
    typedef struct node
    {
        Item data;
        PNode next;
    }Node;
    
    typedef struct
    {
        PNode front;
        PNode rear;
        int size;
    }Queue;
    
    int GetSize(Queue *pqueue)
    {
        return pqueue->size;
    }
    
    bool IsEmpty(Queue *pqueue)
    {
        if(pqueue->front==NULL && pqueue->rear==NULL &&pqueue->size==0)
            return true;
        return false;
    }
    
    void DestroyQueue(Queue *pqueue)
    {
        PNode pnode;
        while(!IsEmpty(pqueue))
        {
            pnode=pqueue->front;
            pqueue->front=pnode->next;
            free(pnode);
            pqueue->size--;
        }
    }
    
    Queue *InitQueue()
    {
        Queue *pqueue=(Queue*)malloc(sizeof(Queue));
        if(pqueue!=NULL)
        {
            pqueue->front=NULL;
            pqueue->rear=NULL;
            pqueue->size=0;
        }
        return pqueue;
    }
    
    PNode DeQueue(Queue *pqueue,Item *pitem)//队头出队列
    {
        PNode pnode = pqueue->front;
        if(!IsEmpty(pqueue))
        {
            *pitem=pnode->data;
            pqueue->front=pnode->next;
            pqueue->size--;
            free(pnode);
            if(pqueue->size==0)
                 pqueue->rear=NULL;
        }
        return pqueue->front;
    }
    
    PNode EnQUeue(Queue *pqueue,Item item)//队尾加元素
    {
        PNode pnode=(PNode)malloc(sizeof(Node));
        pnode->data=item;
        pnode->next=NULL;
        if(IsEmpty(pqueue))
        {
            pqueue->front=pnode;
        }
        else
        {
            pqueue->rear->next=pnode;
        }
        pqueue->rear = pnode;
        pqueue->size++;
        return pnode;
    }
    
    
    int main()
    {
        Queue *pq=InitQueue();
        for(int i=0;i<10;i++)
        {
            EnQUeue(pq,i);
        }
        for(int i=0;i<10;i++)
        {
            Item item;
            DeQueue(pq,&item);
            printf("%d
    ",item);
        }
        DestroyQueue(pq);
    }
    

      

  • 相关阅读:
    Java类与对象
    读《大道至简——团队缺乏的不只是管理》有感
    java课后作业
    c++ 创建单项链表
    c++ 结构指针和双向链表
    c++ 自定义数据结构运用
    c++ 时间函数和结构化数据
    c++ 结束程序的几种方式
    c++ main函数的参数
    c++ 参数个数可变的函数
  • 原文地址:https://www.cnblogs.com/zsboy/p/3739433.html
Copyright © 2011-2022 走看看