队列的定义和简单使用
队列(Queue)其实也是线性结构,但只是在操作上有点不一样,队列的特点,先进先出(FIFO),所以他也有不同的应用,生活当中队列的例子有很多,比如排队啊,很多问题都是可以用队列来解决,
下面来说说队列的定义和队列上面的相关操作,
1.定义队列的节点
#include <stdio.h> #include<stdlib.h> #define MaxSize 100 typedef struct { int* base; int front; int rear; }Queue;
2.队列的初始化操作
int initQueue(Queue * q) { q->base = (int*)malloc(sizeof(Queue) * MaxSize); if (q->base) { q->front = q->rear = 0; return 0; } else { return -1; } }
3.获得队列中元素的个数
int lengthQueue(Queue *q) { return (q->rear - q->front + MaxSize) % MaxSize; }
4.获得队列中队头元素
int getElem(Queue *q) { if (q->front!=q->rear) { return q->base[q->front]; } else { return -1; } }
5.入队操作
int inQueue(Queue* q,int e) { if ((q->rear+1)%MaxSize==q->front) { return -1; } else { q->base[q->rear] = e; q->rear = (q->rear + 1) % MaxSize; return 0; } }
6.出队操作
int outQueue(Queue* q, int e) { if (q->front==q->rear) { return -1; } else { e=q->base[q->front]; q->front = (q->front + 1) % MaxSize; return e; } }
好了,我们下回见,peace

浙公网安备 33010602011771号