zoukankan      html  css  js  c++  java
  • 链式存储队列

    #include <iostream>
    #include <assert.h>
    using namespace std;
    typedef struct node
    {
        int data;
        struct node *next;
    }NODE;
    typedef struct queue
    {
        NODE* head;
        NODE* tail;
    }QUEUE;
    QUEUE* create_queue()
    {
        QUEUE* queue =  new QUEUE;
        queue->head = NULL;
        queue->tail = NULL;
        return queue;
    }
    NODE* create_node(int data)
    {
        NODE* node = new NODE;
        node->data = data;
        node->next = NULL;
        return node;
    }
    void queue_push(QUEUE* queue,int data)
    {
        NODE* node = create_node(data);
        if(queue->tail == NULL)
        {
            queue->tail = node;
            queue->head = node;
        }
        else
        {
            queue->tail->next = node;
            queue->tail = node;
        }
    }
    NODE* destroy_node(NODE* node)
    {
        NODE* next = node->next;
        delete node;
        return next;
    }
    int queue_pop(QUEUE* queue)
    {
        if(queue->head == NULL)
        {
            assert(false);
        }
        int data = queue->head->data;
        queue->head =destroy_node(queue->head);
        if(queue->head == NULL)
        {
            queue->tail = NULL;
        }
        return data;
    }
    int queue_size (QUEUE* queue)
    {
        int size = 0;
        NODE* node = NULL;
        for(node=queue->head; node;node=node->next)
        {
            size++;
        }
        return size;
    }
    void clear(QUEUE* queue)
    {
        while(queue->head)
        {
            queue->head = destroy_node(queue->head);
        }
        queue->tail = NULL;
    }
    void destroy_queue(QUEUE* queue)
    {
        clear(queue);
        delete queue;
    }
    bool queue_empty(QUEUE* queue)
    {
        if( (queue->head==NULL) && (queue->tail==NULL))
        {
            return true;
        }
        return false;
    }
    
    int main()
    {
        QUEUE* queue = create_queue();
        cout<<"input number:  ";
        for(int i=0;i<10;i++)
        {
            queue_push(queue,i);
            cout<<i<<" ";
        }
        cout<<endl;
        //queue_pop(queue);  //
        cout<<"output number:";
        while(! queue_empty(queue))
        {
            cout<<queue_pop(queue)<<" ";
        }
        cout<<endl;
        destroy_queue(queue);
        return 0;
    }

    关注公众号 海量干货等你
  • 相关阅读:
    shell编程:字符串处理方式
    shell编程:变量替换
    export的用法
    docker stack利用secrets启动wordpress
    docker swarm创建swarm集群
    docker x509: certificate has expired or is not yet valid
    docker-compose的scale的用法
    字符串函数-unquote()函数
    Sass-@each
    Sass-@while
  • 原文地址:https://www.cnblogs.com/sowhat1412/p/12734510.html
Copyright © 2011-2022 走看看