链表实现队列 C++实现
来源:互联网 发布:人工智能 高校 编辑:程序博客网 时间:2024/06/05 05:01
/** File name : LinkQueue.cpp* Function : 链表实现队列 C++实现* Created on : 2016年4月26日* Author : beijiwei@qq.com* Copyright : 欢迎大家和我一起交流学习,转载请保持源文件的完整性。任何单位和个人不经本人允许不得用于商业用途*/#include <cstdio>#include <iostream>using namespace std;typedef int Elem_t;typedef struct node {Elem_t data;struct node * next;}Node,*pNode;typedef struct {pNode head;pNode tail;}LinkQueue;void queue_init(LinkQueue & Q);void queue_clear(LinkQueue & Q);bool queue_is_empty(LinkQueue & Q);void queue_in(LinkQueue & Q, Elem_t elem);bool queue_out(LinkQueue & Q, Elem_t &elem);int queue_get_length(LinkQueue & Q);bool queue_get_head(LinkQueue & Q, Elem_t &elem);int main(int argc, char** argv){LinkQueue Lq;Elem_t elem;queue_init(Lq);cout << "queue is empty ? " << queue_is_empty(Lq) << endl;for (int i = 0; i <=5; i++) {queue_in(Lq, i + 10);}cout << "The length of queue is " << queue_get_length(Lq) << endl;queue_get_head(Lq, elem);cout << "The head of queue is " << elem << endl;for (int i = 0; i <= 5; i++) {queue_out(Lq, elem);if (i == 3) {cout << "queue is empty ? " << queue_is_empty(Lq) << endl;cout << "The length of queue is " << queue_get_length(Lq) << endl;queue_get_head(Lq, elem);cout << "The head of queue is " << elem << endl;}}cout << "The length of queue is " << queue_get_length(Lq) << endl;queue_get_head(Lq, elem);cout << "The head of queue is " << elem << endl;return 0;}void queue_init(LinkQueue & Q){Q.head = new Node;Q.tail = Q.head;Q.head->next = NULL;Q.head->data = 0;}void queue_clear(LinkQueue & Q){pNode p = Q.head;pNode ptmp = p;while (p != NULL) {p = ptmp->next;delete ptmp;ptmp = p;}}bool queue_get_head(LinkQueue & Q, Elem_t &elem){if (Q.head == Q.tail) {cout << "queue is empty can not get" << endl;return false;}elem = Q.head->next->data;return true;}bool queue_is_empty(LinkQueue & Q){return (Q.head == Q.tail) ? true : false;}void queue_in(LinkQueue & Q, Elem_t elem){pNode ptmp = new Node;ptmp->data = elem;ptmp->next = Q.tail->next;Q.tail->next = ptmp;Q.tail = ptmp;Q.head->data++;}bool queue_out(LinkQueue & Q, Elem_t &elem){if (Q.head == Q.tail) {cout << "queue is empty can not out" << endl;return false;}pNode ptmp = Q.head->next;elem = ptmp->data;Q.head->next = Q.head->next->next;Q.head->data--;if (Q.head->data == 0)Q.tail = Q.head;delete ptmp;return true;}int queue_get_length(LinkQueue & Q){return Q.head->data;}
0 0
- 数据结构---队列链表c实现
- C语言链表实现队列操作
- 链表实现队列 c语言
- C语言实现链队列
- C 宏实现队列
- 队列C实现
- Objective-C 队列实现
- C实现链式队列
- 循环队列实现(C++)
- 队列 C语言实现
- 队列C语言实现
- C/C++队列实现
- C数据结构实现队列
- 【C++】队列的实现
- C语言实现队列
- 队列(c实现)
- C 循环队列实现
- 队列 c语言实现
- Python自带的服务器
- Jsoup简介——使用Java抓取网页数据
- 第82讲:Spark Streaming第一讲:案例动手实战并在电光石火间理解其工作原理
- Python的getattr(),setattr(),delattr(),hasattr()
- C/C++复习:学生信息排序(结构体)
- 链表实现队列 C++实现
- 将Matlab中的矩阵写入txt文件的方法
- Java
- centos之lnmp
- MATLAB: 读取同一目录下的所有文件名并按时间排序
- 计算器表达式计算 后缀表达式+树实现 - 逆波兰表示法+调度场算法
- SVN工作原理(帮助实现代码管理)
- Tyvj_P1014
- javascript获取时间