Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1291900
  • 博文数量: 168
  • 博客积分: 2124
  • 博客等级: 大尉
  • 技术积分: 2590
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-16 23:51
文章分类

全部博文(168)

文章存档

2014年(6)

2013年(74)

2012年(71)

2011年(17)

分类: C/C++

2013-08-19 22:51:38

一. 链表实现,就是一个单链表来实现循环队列也是比较容易理解的一种办法

主要是两个结构体
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;

阅读(1659) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~