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

    #include<stdio.h>
    #include<stdlib.h>
    
    typedef struct node3
    {
        int nValue;
        struct node3 *pNext;
    }MyQueue;
    
    typedef struct node4
    {
        MyQueue *pHead;
        MyQueue *pTail;
        int nCount;
    }Queue;
    
    void q_Init(Queue **pQueue)//注意这里传的是二级指针,传一级的属于值传递,也可以选择不含参数,返回一个一级指针的做法
    {
        *pQueue  = (Queue*)malloc(sizeof(Queue));
        (*pQueue)->pHead = NULL;
        (*pQueue)->pTail = NULL;
        (*pQueue)->nCount = 0;
    }
    
    void q_Push(Queue *pQueue,int nNum)
    {
        if(pQueue == NULL)return;
    
        MyQueue *pTemp = NULL;
        pTemp = (MyQueue*)malloc(sizeof(MyQueue));
        pTemp->nValue = nNum;//队列实际上是尾插入头删除的单链表
        pTemp->pNext = NULL;
    
        if(pQueue->pHead == NULL)
        {
            pQueue->pHead = pTemp;
        }
        else
        {
            pQueue->pTail->pNext = pTemp;
        }
        pQueue->pTail = pTemp;
    
        pQueue->nCount++;
    }
    
    int q_Pop(Queue *pQueue)
    {
        if(pQueue == NULL || pQueue->nCount == 0)return -1;
    
        int nNum;
        MyQueue *pDel = NULL;
    
        pDel = pQueue->pHead;
        nNum = pDel->nValue;
    
        pQueue->pHead = pQueue->pHead->pNext;
        free(pDel);
        pDel = NULL;
        pQueue->nCount--;
        
        //只有一个元素被弹出之后 尾置空
        if(pQueue->nCount == 0)
        {
            pQueue->pTail = NULL;
        }
        return nNum;
    }
    
    int q_IsEmpty(Queue *pQueue)
    {
        if(pQueue == NULL)return -1;
        return pQueue->nCount == 0?1:0;
    }
    
    int main()
    {
        Queue *pQueue = NULL;
        q_Init(&pQueue);
        q_Push(pQueue,1);
        q_Push(pQueue,2);
        q_Push(pQueue,3);
        q_Push(pQueue,4);
    
        printf("%d
    ",q_Pop(pQueue));
        printf("%d
    ",q_Pop(pQueue));
        printf("%d
    ",q_Pop(pQueue));
        return 0;
    }
  • 相关阅读:
    python 获取Excel 的内容
    python 获取文件Excel 的行数与列数
    python 读取Excel 取出表头(列名)
    DRF的视图组件
    Redis
    Git的故事
    DRF的JWT用户认证
    DRF的三大认证组件
    DRF的序列化组件
    DRF的请求响应组件
  • 原文地址:https://www.cnblogs.com/curo0119/p/7826806.html
Copyright © 2011-2022 走看看