zoukankan      html  css  js  c++  java
  • 队列

    全部代码

      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 #include <assert.h>
      4 
      5 typedef struct node
      6 {
      7     int nValue;
      8     struct node *pNext;
      9 }MyQueue;
     10 
     11 typedef struct node2
     12 {
     13     int nCount;
     14     MyQueue *pHead;
     15     MyQueue *pTail;
     16 }Queue;
     17 
     18 void q_Init(Queue **ppQueue)
     19 {
     20     assert(ppQueue != NULL);
     21 
     22     *ppQueue = (Queue *)malloc(sizeof(Queue));
     23     if(NULL == *ppQueue)
     24     {
     25         printf("队列空间分配失败!
    ");
     26         exit(-1);
     27     }
     28     (*ppQueue)->nCount = 0;
     29     (*ppQueue)->pHead = NULL;
     30     (*ppQueue)->pTail = NULL;
     31 }
     32 
     33 void q_Push(Queue *pQueue, int nNum)
     34 {
     35     MyQueue *pTemp = NULL;
     36 
     37     assert(pQueue!=NULL);
     38 
     39     //临时节点开辟空间
     40     pTemp = (MyQueue *)malloc(sizeof(MyQueue));
     41     if(NULL == pTemp)
     42     {
     43         printf("临时节点空间分配失败!
    ");
     44         exit(-1);
     45     }
     46     pTemp->nValue = nNum;
     47     pTemp->pNext = NULL;
     48 
     49     //尾添加
     50     if(NULL == pQueue->pHead)
     51     {
     52         pQueue->pHead = pTemp;
     53     }
     54     else
     55     {
     56         pQueue->pTail->pNext = pTemp;
     57     }
     58     pQueue->pTail = pTemp;
     59 
     60     //更新队列中的元素
     61     ++pQueue->nCount;
     62 }
     63 
     64 int q_Pop(Queue *pQueue)
     65 {
     66     int nNum;
     67     MyQueue *pDel = NULL;
     68 
     69     assert(pQueue!=NULL && pQueue->pHead!=NULL);
     70 
     71     //头删除
     72     pDel = pQueue->pHead;
     73     nNum = pDel->nValue;
     74     //头下移
     75     pQueue->pHead = pQueue->pHead->pNext;
     76 
     77     //释放空间
     78     free(pDel);
     79     pDel = NULL;
     80 
     81     //更新队列中的元素
     82     --pQueue->nCount;
     83 
     84     //尾置空
     85     if(0 == pQueue->nCount)
     86     {
     87         pQueue->pTail = NULL;
     88     }
     89 
     90     return nNum;
     91 }
     92 
     93 int q_IsEmpty(Queue *pQueue)
     94 {
     95     assert(pQueue!=NULL);
     96 
     97     return 0==pQueue->nCount ? 1:0;
     98 }
     99 
    100 int main(void)
    101 {
    102     Queue *pQueue = NULL;
    103 
    104     //初始化
    105     q_Init(&pQueue);
    106 
    107     //添加
    108     q_Push(pQueue, 10);
    109     q_Push(pQueue, 20);
    110 
    111     printf("%d
    ", q_Pop(pQueue));
    112     printf("%d
    ", q_Pop(pQueue));
    113 
    114     return 0;
    115 }
  • 相关阅读:
    OnSize() 与 OnInitDialog()[设置控件大小]
    C库函数中字符串处理函数集合
    智能提示导致Visual Studio 2010崩溃问题
    MFC中关闭窗口的几种方法
    8086寄存器组
    MASM6.1使用方法(适合初学者)
    MultiThread
    汇编语言超浓缩教程
    汇编 ADD与DAA指令
    Function Pointer
  • 原文地址:https://www.cnblogs.com/chen-cai/p/7765413.html
Copyright © 2011-2022 走看看