C++_队列(Queue)
2014-11-15 15:57
127 查看
队列(Queue)是一种数据结构,可以在队列的一端插入元素而在队列的另一端删除元素,它有以下特点:
1、允许删除的一端称为队头(front);
2、允许插入的一端称为队尾(reat);
3、当队列中没有元素时称为空队列;
4、当队列中只有一个元素时,队头和队尾指向的节点都是同一个;
5、队列亦称为先进先出(First In First Out)的线性表,简称为FIFO表。队列的修改根据是先进先出的原则,新来的成员总是加入队尾(即不能中间插入),每次离开的成员总是队头才成员(不允许中间离队)。
下面是代码实现:
1、允许删除的一端称为队头(front);
2、允许插入的一端称为队尾(reat);
3、当队列中没有元素时称为空队列;
4、当队列中只有一个元素时,队头和队尾指向的节点都是同一个;
5、队列亦称为先进先出(First In First Out)的线性表,简称为FIFO表。队列的修改根据是先进先出的原则,新来的成员总是加入队尾(即不能中间插入),每次离开的成员总是队头才成员(不允许中间离队)。
下面是代码实现:
// // Queue.h // C++_Test001 // // Created by TUSM on 14-11-15. // Copyright (c) 2014年 CXM. All rights reserved. // #ifndef C___Test001_Queue_h #define C___Test001_Queue_h #include <iostream> #include <stdlib.h> typedef struct node { int data; struct node *next; }Node; typedef struct queue { node *front; node *rear; }Queue; Queue *creatQueue(); Queue *enqueue(Queue *q, int data); Queue *dequeue(Queue *q); int length(Queue *q); void print(Queue *q); #endif
// // Queue.cpp // C++_Test001 // // Created by TUSM on 14-11-15. // Copyright (c) 2014年 CXM. All rights reserved. // #include "Queue.h" using namespace std; Queue *creatQueue() { Queue *pQueue = NULL; pQueue = (Queue *)malloc(sizeof(Queue)); pQueue->front = NULL; pQueue->rear = NULL; return pQueue; } Queue *enqueue(Queue *q, int data) { node *pNew = NULL; pNew = (Node *)malloc(sizeof(Node)); pNew->data = data; pNew->next = NULL; if (q->rear == NULL) { q->front = q->rear = pNew; } else { q->rear->next = pNew; q->rear = pNew; } return q; } Queue *dequeue(Queue *q) { Node *pNode = NULL; pNode = q->front; if (pNode == NULL) { cout << "queue is empty" << endl; return NULL; } else { q->front = q->front->next; if (q->front == NULL) { q->rear = NULL; } free(pNode); } return q; } int length(Queue *q) { int len = 0; Node *pNode = q->front; if (pNode == NULL) { return len; } else { len = 1; while (pNode != q->rear) { pNode = pNode->next; len ++; } } return len; } void print(Queue *q) { Node *pNode = NULL; pNode = q->front; if (pNode == NULL) { cout << "queue is empty" << endl; return; } while (pNode != q->rear) { cout << "data:" << pNode->data << endl; pNode = pNode->next; } cout << "data:" << pNode->data << endl; cout << endl; }
相关文章推荐
- C++实现的队列queue
- linux C++ queue 队列 学习积累
- [C++基础]队列<queue>中的常用函数
- 【队列】C++队列头文件<queue>的应用
- C++ STL学习笔记7--priority_queue优先队列
- 队列(queue)的链表(list)实现及循环数组(circular array)实现 C++实现
- C++最大堆实现priority_queue优先级队列(算法导论)
- c++学习之优先队列(priority_queue)
- C++ STL入门教程(4)——stack(栈),queue(队列),priority_queue(优先队列)的使用(附完整程序代码)
- Priority_Queue 优先队列 C++学习笔记
- C++利用队列(Queue)求解迷宫(Maze)中指定起点和终点间是否有最短路径,如果有的话输出所需步数,如果没有输出
- 队列(queue)的链表(list)实现及循环数组(circular array)实现 C++实现
- [C++] STL 优先队列 priority_queue
- 有序队列(sorted_queue)的C++实现
- 元素类型C++ 标准模板库STL 队列 queue 使用方法与应用介绍(一)
- C++ 实现queue(队列)链表
- 循环队列的实现(Queue, C++版)
- C++ 标准模板库STL 队列 queue 使用方法与应用介绍(一)
- C++ - "priority_queue" 优先级队列 简介 及 代码
- C++ deque(double-ended-queue)双端队列