注册 登录
编程论坛 C++教室

C++实现链队列的基础操作

shitainong 发布于 2012-12-10 15:00, 327 次点击
  空队列:就是头指针和尾指针指向同一个空间。

  插入元素,从队尾进,处理一下队尾,然后,若队列为空,注意进入第一个元素时的情况就ok,都很简单。

  删除元素:就从队头删除,由于加入了头结点,所以比较方便对于队头的处理。成都IT培训

  queue.h

  #include<iostream>

  using namespace std;

  struct list

  {

  int data; //队列中数据

  list *next; //表结构体中的链表,用于指向下一个元素

  };

  class queue

  {

  private:

  list *front;

  list *rear;

  public:

  queue()

  {

  front=rear=new list; //初始化,一定要注意分配空间,队列为空,注意头结点和头指针的区别

  front->next=NULL;

  }

  void enqueue(int elem); //插入元素为elem 的队尾远么成都c++培训

  int dequeue(); //删除队头元素,并返回其值

  void traverse(); //遍历队列中的元素

  };

  queue.cpp

  #include "queue.h"

  void queue::enqueue(int elem)

  {

  list *newlist=new list;

  newlist->data=elem;

  newlist->next=NULL;

  if(front==rear)//说明是空队列 达内好不好

  {

  front->next = newlist;

  rear=newlist;

  }

  else

  {

  rear->next=newlist;

  rear=newlist;

  }

  }

  int queue::dequeue() //从队头出去

  {

  int elem;//用于记录出队列的元素

  list *temp=new list; //用于临时存储要出队列队头

  if(front==rear)return -1;

  else

  {

  temp = front->next;

  elem=temp->data;

  front->next=temp->next;

  }

  delete temp;

  return elem;

  }

  void queue::traverse() //遍历整个队列 c++培训

  {

  list *temp;

  cout<<"从队头到队尾的元素分别为:"<<endl;

  for(temp=front->next;temp->next!=NULL;temp=temp->next)

  {

  cout<<temp->data<<" ";

  }

  cout<<rear->data<<endl;

  }

  main.cpp

  #include"queue.h"

  int main()

  {

  queue q;

  q.enqueue(1);

  q.enqueue(3);

  q.traverse();

  cout<<"删除的元素为:"<<endl;

  cout<<q.dequeue()<<endl;;

  q.traverse();

  }www.
2 回复
#2
rjsp2012-12-10 15:45
果然,最后一行出现了小广告
#3
qunxingw2012-12-10 20:44
版主眼力高。
1