数据结构——13 队列链表描述

来源:互联网 发布:淘宝的捉猫猫怎么玩 编辑:程序博客网 时间:2024/06/05 14:28

队列——链表描述


队列——入队、出队、打印(链表描述)
为了方便出队操作,建立队列的时候,队列的方向和队列里元素的方向连接相反

#include <iostream>using namespace std;struct node               //定义一个结构体,它是队列里的元素{  int x;  node* next;};class queue{public:queue():size(0)       //构造函数初始化队列里元素的个数为0,并new一个节点{front=rear=new node; }    ~queue();                           //析构函数删除队列int dequeue();                      //出队void enqueue(int n);                //进对private:    node *front;                            //队列头指针node *rear;                         //队列尾指针    int size;                               //队列里元素的个数};queue::~queue()                           {  node *p=front;  while(p!=NULL)  {    front=front->next;      //从front删除元素  delete [] p;                  p=front;  }}void queue::enqueue(int n)        //入队操作,增加一个元素放在队尾{    node* temp=new node;          //定义一个临时指针if(size==0)               //如果size=0,表示队列没有元素,但构造函数new了一个node节点,所以直接把它当作第一个节点,此时,front和rear都指向它{rear->x=n;rear->next=NULL;//rear=temp;       //这里不知道为什么这样不行,直接把temp赋值给rear,可能rear->next出问题}else                      //size不为0,往尾巴上续{temp->x=n;rear->next=temp;          temp->next=NULL;rear=temp;                 }size++;                   //栈里元素个数加1}int queue::dequeue()              //出对操作,返回出队元素值,并删除该元素{    node* temp;                   //定义一个临时node指针    int out;                      //返回值if(size)                  //用size判断是否栈里还有元素{temp=front;                 front=temp->next;out=temp->x;delete []temp;                   size--;        return out;}else{cout<<"队列已经为空!"<<endl;exit(0);}}int main(){  queue que;  cout<<"The enqueue of que are: ";  for(int i=1;i<=20;i++)  {  cout<<i<<"  ";  que.enqueue(i);  }  cout<<endl;  cout<<"The dequeue of que are: ";  for(i=1;i<=10;i++)    cout<<que.dequeue()<<"  ";cout<<endl;  return 0;}


0 0