数组实现队列 C++实现
2016-04-25 16:30
471 查看
/* * File name : LinkLiQt.cpp * Function : 数组实现队列 C++实现 * Created on : 2016年4月25日 * Author : beijiwei@qq.com * Copyright : 欢迎大家和我一起交流学习,转载请保持源文件的完整性。 任何单位和个人不经本人允许不得用于商业用途 */ #include <cstdio> #include <iostream> using namespace std; #define MAX 10 typedef int Data_t; typedef struct Aqueue { Data_t data[MAX]; int head; }Aqueue; void queue_init(Aqueue & Q); void queue_clear(Aqueue & Q); bool queue_is_empty(Aqueue & Q); bool queue_in(Aqueue & Q, Data_t elem); bool queue_out(Aqueue & Q, Data_t &elem); int queue_get_length(Aqueue & Q); bool queue_get_head(Aqueue & Q, Data_t &elem); int main(int argc, char** argv) { Aqueue aq; Data_t elem; queue_init(aq); cout << "queue is empty ? " << queue_is_empty(aq) << endl; for (int i = 0; i < 11; i++) { queue_in(aq, i + 10); } cout << "The length of queue is " << queue_get_length(aq) << endl; queue_get_head(aq, elem); cout << "The head of queue is " << elem<< endl; for (int i = 0; i < 11; i++) { queue_out(aq, elem); if (i == 3) { cout << "queue is empty ? " << queue_is_empty(aq) << endl; cout << "The length of queue is " << queue_get_length(aq) << endl; cout << "The head of queue is " << elem << endl; } } return 0; } void queue_init(Aqueue & Q) { Q.head = -1; } void queue_clear(Aqueue & Q) { Q.head = -1; } bool queue_get_head(Aqueue & Q, Data_t &elem) { if (Q.head == -1) { cout << "queue is empty can not get" << endl; return false; } elem = Q.data[Q.head]; return true; } bool queue_is_empty(Aqueue & Q) { return (Q.head == -1) ? true : false; } bool queue_in(Aqueue & Q, Data_t elem) { if (Q.head == MAX - 1) { cout << "can not in, queue is full" << endl; return false; } for (int i = Q.head + 1; i > 0; i--) { Q.data[i] = Q.data[i - 1]; } Q.data[0] = elem; Q.head++; return true; } bool queue_out(Aqueue & Q, Data_t &elem) { if (Q.head == -1) { cout << "queue is empty can not out" << endl; return false; } elem = Q.data[Q.head]; Q.head--; return true; } int queue_get_length(Aqueue & Q) { return Q.head + 1; }
相关文章推荐
- [LeetCode] 344&345
- C++实现单例模式
- 简要说明C语言中指针函数与函数指针的区别
- C语言中宏定义"#"和"##"符号的用法
- 验证码切分程序
- Reverse Words in a String
- C语言中的变参数函数,宏
- malloc calloc realloc的对比
- C语言压缩文件和用MD5算法校验文件完整性的实例教程
- 将VIM改造成c++IDE
- C++栈的实现(针对某种数据类型)
- C语言中交换int型变量的值及转换为字符数组的方法
- C++程序员发展方向
- C++ 语言宏定义函数的使用(定义单行和多行)
- 从尾到头打印链表中每个节点的值(采用栈实现)
- 一波C语言字符数组实用技巧集锦
- c/c++ 关于字符串转换的总结
- 《Windows API》01 简介
- C++ 中extern"C"
- C/C++复习:统计票数