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);
    }
    

      

  • 相关阅读:
    python模块之subprocess
    Linux系统中如何升级pip
    如何发布自己用python写的py模块
    Win10系统如何分区
    Win10修改编辑文件无法保存怎么办(没有权限)
    robotframework利用selenium2Library实现无界面自动化关键字
    jmeter学习之安装篇(一)
    javascript——this关键字
    Ajax——请求
    AJAX学习——什么是AJAX
  • 原文地址:https://www.cnblogs.com/zsboy/p/3739433.html
Copyright © 2011-2022 走看看