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

    #include<stdio.h>
    #include<malloc.h>
    #include<stdlib.h>
    typedef struct node{
        int value;
        struct node * pNext;
    }NODE,*PNODE;
    
    typedef struct queue{
        PNODE front;
        PNODE rear;
    }QUEUE,*PQUEUE;
    
    void init_queue(PQUEUE pQueue);//1
    void destory_queue(PQUEUE pQueue);//1
    void clean_queue(PQUEUE pQueue);//1
    bool is_empty(PQUEUE pQueue);//1
    void get_head(PQUEUE pQueue,int *e);//1
    void add_elem(PQUEUE pQueue);//1
    void del_tail(PQUEUE pQueue);//1
    void get_length(PQUEUE pQueue);//1
    void trea_queue(PQUEUE pQueue);//1
    
    int main()
    {
        int e = 0;
        QUEUE queue;
        init_queue(&queue);
        add_elem(&queue);
        trea_queue(&queue);
        destory_queue(&queue);
        trea_queue(&queue);
        return 0;
    }
    
    
    
    void init_queue(PQUEUE pQueue)
    {
        pQueue->front = pQueue->rear = NULL;
    }
    
    
    void add_elem(PQUEUE pQueue)
    {
        int val;
        while(scanf("%d",&val) && val != -1){
            PNODE p = (PNODE)malloc(sizeof(NODE));
            if(pQueue->front ==NULL && pQueue->rear == NULL){
                p->value = val;
                p->pNext = NULL;
                pQueue->front = pQueue->rear = p;
            }else{
                p->value = val;
                p->pNext = NULL;
                pQueue->rear->pNext = p;
                pQueue->rear = p; 
            }
        }
    }
    
    void trea_queue(PQUEUE pQueue)
    {
        PNODE p = pQueue->front;
        for(;p;p = p->pNext){
            printf("%d	",p->value);
        }
        printf("
    ");
    }
    
    void del_tail(PQUEUE pQueue)
    {
        PNODE p = pQueue->front;
        if(pQueue->front == pQueue->rear){
            pQueue->front = pQueue->front->pNext;
            free(p);
            pQueue->front = pQueue->rear = NULL;
        }else{
            pQueue->front = pQueue->front->pNext;
            free(p);
        }
    
    }
    
    void get_length(PQUEUE pQueue)
    {
        if(pQueue->front == NULL && pQueue->rear == NULL){
            printf("ERRORs
    ");
        }else{
            int cnt = 0;
            PNODE p = pQueue->front;
            while(p){
                cnt++;
                p = p->pNext;
            }
            printf("The length of the queue is %d
    ",cnt);
        }
    } 
    
    bool is_empty(PQUEUE pQueue)
    {
        if(pQueue->front == NULL && pQueue->rear == NULL){
            printf("The queue is empty
    ");
            return true;
        }else{
            printf("The queue is not empty
    ");
            return false;
        }
    }
    
    void get_head(PQUEUE pQueue,int *e)
    {
        if(is_empty(pQueue)){
            printf("SORRY IS EMPTY
    ");
        }else{
            *e = pQueue->front->value;
        }
    }
    
    void clean_queue(PQUEUE pQueue)
    {
        PNODE p = pQueue->front;
        while(p){
            p->value = 0;
            p = p->pNext;
        }
    }
    
    void destory_queue(PQUEUE pQueue)
    {
        PNODE p = pQueue->front;
        while(pQueue->front != NULL && pQueue->rear != NULL){
            del_tail(pQueue);
        }
    
    }
    
  • 相关阅读:
    Nginx+IIS+Redis 处理Session共享问题 2
    Nginx+IIS+Redis 处理Session共享问题 1
    [ZooKeeper.net] 1 模仿dubbo实现一个简要的http服务的注册 基于webapi
    使用小技巧使子功能模块不污染主框架
    sqlserver 去除重复的行数据
    setsockopt用法详解
    windows 非窗口定时器
    Redis list 之增删改查
    王垠:如何掌握程序语言(转)
    【练习】整树转换为16进制的字符串的函数
  • 原文地址:https://www.cnblogs.com/pengwill/p/7367192.html
Copyright © 2011-2022 走看看