标题:C++实现链队列的基础操作
取消只看楼主
shitainong
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2012-7-6
结帖率:0
 问题点数:0 回复次数:0 
C++实现链队列的基础操作
  空队列:就是头指针和尾指针指向同一个空间。

  插入元素,从队尾进,处理一下队尾,然后,若队列为空,注意进入第一个元素时的情况就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.
搜索更多相关主题的帖子: private include public 
2012-12-10 15:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-390503-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.058646 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved