程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++實現鏈隊列的基礎操作

C++實現鏈隊列的基礎操作

編輯:C++入門知識

空隊列:就是頭指針和尾指針指向同一個空間。
插入元素,從隊尾進,處理一下隊尾,然後,若隊列為空,注意進入第一個元素時的情況就ok,都很簡單。
刪除元素:就從隊頭刪除,由於加入了頭結點,所以比較方便對於隊頭的處理。

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 的隊尾遠麼
   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()         //遍歷整個隊列
{
   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();
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved