一. 链表实现,就是一个单链表来实现循环队列也是比较容易理解的一种办法
主要是两个结构体
typedef struct node
{
int data;
struct node *next;
}node;
typedef struct queue
{
node *front;//指向链表第一个元素
node *rear;//指向链表最后一个元素
}stack;
入队操作:在front之前增加节点,并将front指向新节点
出队操作:删除rear最后一个节点,并将rear指向倒数第二个节点
二.数组实现
结构体:
typedef struct queue
{
int data[maxsize + 1]; //之所以加1,是为判断队列为满时候较方便
int front;
int rear;
}queue;
rear是入队元素的下标+1
front是第一个应该出队的元素.的下标
队列满
rear - front = maxsize + 1
或
front - rear = 1;
队列空:
rear = front;
阅读(1709) | 评论(0) | 转发(0) |