一、定义队列结构体
//
typedef struct Queue
{
int *pArray;
int front;
int rear;
}QUEUE, *PQUEUE;
//
二、初始化队列
&&
void init_queue(PQUEUE pQueue)
{
pQueue->pArray = (int *)malloc(sizeof(int) * 10);
pQueue->front = 0;
pQueue->rear = 0;
}
&&
三、入队
%%
bool en_queue(PQUEUE pQueue, int val)
{
if (isfull_queue(pQueue))
{
return false;
}
else
{
pQueue->pArray[pQueue->rear] = val;
pQueue->rear = (pQueue->rear+1) % 10;
return true;
}
}
%%
四、出队
%%
bool out_queue(PQUEUE pQueue, int *pVal)
{
if (isempty_queue(pQueue))
{
return false;
}
else
{
*pVal = pQueue->pArray[pQueue->front];
pQueue->front = (pQueue->front + 1) % 10;
return true;
}
}
%%
五、队列遍历
%%
void traverse_queue(PQUEUE pQueue)
{
int i = pQueue->front;
while(i != pQueue->rear)
{
printf("%d ", pQueue->pArray[i]);
i = (i + 1) % 10;
}
printf("\n");
return ;
}
%%
源代码:
%%
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct Queue
{
int *pArray;
int front;
int rear;
}QUEUE, *PQUEUE;
void init_queue(PQUEUE pQueue);
bool en_queue(PQUEUE pQueue, int val);
void traverse_queue(PQUEUE pQueue);
bool isfull_queue(PQUEUE pQueue);
bool isempty_queue(PQUEUE pQueue);
bool out_queue(PQUEUE pQueue, int *pVal);
int main(void)
{
QUEUE Queue;
int val;
init_queue(&Queue);
en_queue(&Queue, 11);
en_queue(&Queue, 12);
en_queue(&Queue, 13);
en_queue(&Queue, 14);
en_queue(&Queue, 15);
en_queue(&Queue, 16);
en_queue(&Queue, 17);
en_queue(&Queue, 18);
en_queue(&Queue, 20);
en_queue(&Queue, 21);
en_queue(&Queue, 22);
en_queue(&Queue, 23);
traverse_queue(&Queue);
if ( out_queue(&Queue, &val))
{
printf("out queue success, The element is %d\n", val);
}
else
{
printf("out queue failed!\n");
}
traverse_queue(&Queue);
return 0;
}
void init_queue(PQUEUE pQueue)
{
pQueue->pArray = (int *)malloc(sizeof(int) * 10);
pQueue->front = 0;
pQueue->rear = 0;
}
bool isfull_queue(PQUEUE pQueue)
{
if ((pQueue->rear + 1) % 10 == pQueue->front)
{
return true;
}
else
{
return false;
}
}
bool en_queue(PQUEUE pQueue, int val)
{
if (isfull_queue(pQueue))
{
return false;
}
else
{
pQueue->pArray[pQueue->rear] = val;
pQueue->rear = (pQueue->rear+1) % 10;
return true;
}
}
void traverse_queue(PQUEUE pQueue)
{
int i = pQueue->front;
while(i != pQueue->rear)
{
printf("%d ", pQueue->pArray[i]);
i = (i + 1) % 10;
}
printf("\n");
return ;
}
bool isempty_queue(PQUEUE pQueue)
{
if (pQueue->front == pQueue->rear)
{
return true;
}
return false;
}
bool out_queue(PQUEUE pQueue, int *pVal)
{
if (isempty_queue(pQueue))
{
return false;
}
else
{
*pVal = pQueue->pArray[pQueue->front];
pQueue->front = (pQueue->front + 1) % 10;
return true;
}
}
%%
运行结果:
[root@localhost struct_list]# ./queue1
11 12 13 14 15 16 17 18 20
out queue success, The element is 11
12 13 14 15 16 17 18 20