队列:先进先出
主要掌握入队EnQueue和出队DeQueue操作
代码:
/**
Name: Link_Queue
Author: Bryant_xw
Date: 2018-09-28-20.12.11
*/
#include<bits/stdc++.h>
using namespace std;
typedef struct Node
{
int n;
struct Node* next;
}QueueNode;
typedef struct m_queue
{
QueueNode* pHead;
QueueNode* pTail;
int nCount;
}Queue;
void init(Queue **que)
{
*que = (Queue*)malloc(sizeof(Queue));
(*que)->pHead = NULL;
(*que)->pTail = NULL;
(*que)->nCount = 0;
}
void Enqueue(Queue* que, int num)
{
if(que == NULL)
return ;
QueueNode* pTemp = (QueueNode*)malloc(sizeof(QueueNode));
pTemp->n = num;
pTemp->next = NULL;
if(que->pHead==NULL){
que->pHead = pTemp;
}else{
que->pTail->next = pTemp;
}
que->pTail = pTemp;
que->nCount++;
}
int DeQueue(Queue* que)
{
if(que == NULL || que->nCount == 0)
return -1;
QueueNode* pDel = NULL;
int res;
pDel = que->pHead;
que->pHead = que->pHead->next;
res = pDel->n;
free(pDel);
que->nCount--;
if(que->nCount == 0)
que->pTail = NULL;
return res;
}
int main(){
Queue* que = NULL;
init(&que);
for(int i = 0; i < 5; ++i)
Enqueue(que,i+2);
printf("Queue size is:%d\n",que->nCount);
printf("Queue contains: ");
for(int i = 0; i < 5; ++i){
if(i != 4)
printf("%d ",DeQueue(que));
else
printf("%d",DeQueue(que));
}
return 0;
}