数据结构之队列 C++实现
2015-09-14 21:36
651 查看
队列很重要的一点就是入队在队尾进行,出队在队首进行,所以又把队列称为先进先出表。
功能实现
1.入队功能
使用链表实现
现象如下图所示:
2.出队功能
出队在队首操作,分三种情况:
1.队首为空,直接返回空;
2.队首与队尾相同,出队后,队首和队尾为空;
3.其他,删除原队首,将队首指向原队首的下一个节点。
现象如下图所示:
功能实现
1.入队功能
使用链表实现
#include"iostream" using namespace std; typedef struct student{ int data; student* next; }Node; typedef struct linkQueue{ Node *first, *rear; linkQueue() :first(NULL), rear(NULL){} }Queue; /* 入队,入队是在队尾操作,出队是在队首操作 */ Queue* insert(Queue *Q, int x){ Node *temp; temp = (Node*)malloc(sizeof(Node)); temp->data = x; temp->next = NULL; if (Q->rear == NULL){ Q->first = temp; Q->rear = temp; } else{ Q->rear->next = temp; Q->rear = temp; } return Q; } int main(){ Queue *q = new Queue; insert(q, 1); insert(q, 2); insert(q, 3); cout << "队首:"<<q->first->data << endl; cout << "队尾:" << q->rear->data << endl; system("pause"); return 0; }
现象如下图所示:
2.出队功能
出队在队首操作,分三种情况:
1.队首为空,直接返回空;
2.队首与队尾相同,出队后,队首和队尾为空;
3.其他,删除原队首,将队首指向原队首的下一个节点。
/* 出队 */ Queue* dequeue(Queue* Q){ Node *temp; if (Q->first == NULL){ cout << "NULL Queue" << endl; return NULL; } else{ temp = Q->first; if (Q->first == Q->rear){ Q->first = NULL; Q->rear = NULL; } else{ Q->first = Q->first->next; free(temp); } return Q; } } int main(){ Queue *q = new Queue; //入队 cout << "入队:" << endl; enqueue(q, 1); enqueue(q, 2); enqueue(q, 3); cout << "队首:"<<q->first->data << endl; cout << "队尾:" << q->rear->data << endl; //出队 cout << "出队" << endl; dequeue(q); cout << "队首:" << q->first->data << endl; cout << "队尾:" << q->rear->data << endl; system("pause"); return 0; }
现象如下图所示:
相关文章推荐
- C#线程队列用法实例分析
- 算法系列15天速成 第九天 队列
- C语言单链队列的表示与实现实例详解
- mysql 队列 实现并发读
- C#队列Queue用法实例分析
- C#多线程处理多个队列数据的方法
- C语言循环队列的表示与实现实例详解
- C++循环队列实现模型
- C#内置队列类Queue用法实例
- Array栈方法和队列方法的特点说明
- C#通过链表实现队列的方法
- C#队列Queue多线程用法实例
- C#数据结构与算法揭秘五 栈和队列
- C++中队列的建立与操作详细解析
- PHP实现的memcache环形队列类实例
- php基于双向循环队列实现历史记录的前进后退等功能
- 队列在编程中的实际应用(php)
- Go语言的队列和堆栈实现方法
- C++队列用法实例
- PHP队列用法实例