Chinaunix首页 | 论坛 | 博客
  • 博客访问: 702310
  • 博文数量: 152
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1793
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-12 12:26
个人简介

相信自己,只有不想做的,没有做不到的。

文章分类

全部博文(152)

文章存档

2021年(1)

2015年(2)

2014年(74)

2013年(75)

分类: LINUX

2013-10-27 21:27:43

#include
#include


#define MAX 5


typedef int DATAYTYPE;

//队列的结构体  
typedef struct 
{
//存放数据
DATAYTYPE buf[MAX];
//记录第一个元素的下标
//出队的时候通过front出队
int front;
//记录最后一个元素的下标
//入队的时候通过rear入队
int rear;


}SeqQueue;

//创建一个空队列
SeqQueue *create_queue()
{
SeqQueue *q;


q = (SeqQueue *)malloc(sizeof(SeqQueue));
q->front = q->rear = -1;


return q;
}


//判断队列是否为空
int is_empty_queue(SeqQueue *q)
{
return q->front == q->rear ? 1 : 0;
}

//判断队列是否为满
int is_full_queue(SeqQueue *q)
{
return q->rear == MAX - 1 ? 1 : 0;
}


//尾入
int EnterQueue(SeqQueue *q,DATAYTYPE data)
{
q->buf[++q->rear] = data;
return 0;
}


//头出
DATAYTYPE DeleteQueue(SeqQueue *q)
{
return q->buf[++q->front];
}

//主函数  实现 创建队列 尾入头出  
int main(int argc, const char *argv[])
{
int i = 0;
SeqQueue *q = create_queue();

while(!is_full_queue(q))
{
EnterQueue(q,i++);
}


while(!is_empty_queue(q))
{
printf("%d ",DeleteQueue(q));
}


printf("\n");


return 0;
}

//队列可以实现数据插入和输出的顺序都是一样的,这点和栈不相同
阅读(568) | 评论(0) | 转发(0) |
0

上一篇:顺序栈的实现

下一篇:链表栈的实现

给主人留下些什么吧!~~