队列的概念:
现实生活中,经常可以看到队列的例子,如排队买票,先来的人买了票,先离开,后面来的只有等前面离开后,
才能买票离开,队列就是类似排队买票的一种数据结构。
队列的定义:
队列是限定在一端进行插入,另一端进行删除特殊线性表。
允许出队的一端称为队头,允许入队的一端称为队尾。
队列的性质:
先进先出(FIFO),先进来的先出去,跟栈的区别,栈是先进后出。
队列的操作:
入队:在队尾加入
出队:在队头离开
队列的表示:
在C++语言里,一般用链表表示队列,先定义每个结点的结构体,定义两个指针head,tail分别指向
队列的头和尾,入队和出队的操作,通过改变指针来进行。具体代码如下:
#include <iostream> using namespace std; struct Node { int data; //队列元素,可以是其他类型 Node* next; //指向下一个元素的指针 }; Node* head; //队首指针 Node* tail; //队尾指针 void initQueue(); //初始化队列 void addItem(int x);//入队 int outItem();//出队 int main() { initQueue(); addItem(11); addItem(12); addItem(13); cout<<outItem()<<endl; cout<<outItem()<<endl; cout<<outItem()<<endl; cout<<outItem()<<endl; cout<<outItem()<<endl; cout<<outItem()<<endl; cout<<outItem()<<endl; return 0; } void initQueue() //初始化时,首尾指针指向相同的位置 { Node *temp = new Node; head =temp; tail =temp; tail->next =NULL; } void addItem(int x) //入队时,改变尾指针指向 { Node *temp = new Node; temp->data =x; temp->next =NULL; tail->next =temp; tail = temp; } int outItem() //出队,先判断队列是否为空 { if (head == tail) { cout<<"队列已空"<<endl; return 0; } Node *temp = new Node; temp = head->next; int x=temp->data; head =head->next; return x; }
队列相关的题目:
已知队列(13,2,11,34,77,5,7,18,26,15)第一个进入队列的元素是13,则第五个出队列的元素是()
A.5 B.41 C.77 D.13 E.18