c++ 實現鏈佇列資料結構
建立標頭檔案LinkQueue.h
#ifndef LinkQueue_h #define LinkQueue_h template <class DataType> //使用結構體定義結點 struct Node{ DataType data; Node<DataType> *next; //指向下一個結點的指標 }; template <class DataType> class LinkQueue{ public: LinkQueue(); //建構函式 ~LinkQueue(); //解構函式 void EnQueue(DataType x); //入隊函式 DataType DeQueue(); //出隊函式 DataType GetQueue(); //得到隊頭元素 int Empty(); //判斷鏈佇列是否為空 private: Node<DataType> *front, *rear; }; #endif /* LinkQueue_h */
建立原始檔LinkQueue.cpp實現標頭檔案中的成員函式
#include <stdio.h> #include "LinkQueue.h" template <class DataType> LinkQueue<DataType>::LinkQueue(){ Node<DataType> *s = NULL; s = new Node<DataType>; s -> next = NULL; front = rear = s; } template <class DataType> LinkQueue<DataType>::~LinkQueue(){ Node<DataType> *p = NULL; while(front != NULL){ p = front ->next; delete front; front = p; } } template <class DataType> void LinkQueue<DataType>:: EnQueue(DataType x){ Node<DataType> *s = NULL; s = new Node<DataType>; s -> data = x; s -> next = NULL; rear -> next = s; rear = s; } template <class DataType> DataType LinkQueue<DataType>:: DeQueue(){ Node<DataType> *p = NULL; int x; if (rear == front) throw "underflow"; p = front->next; x = p->data; front->next = p->next; if (p->next == NULL) rear = front; delete p; return x; } template <class DataType> DataType LinkQueue<DataType>::GetQueue(){ return front -> next -> data; } template <class DataType> int LinkQueue<DataType>::Empty(){ if (front == rear) return 1; else return 0; }
編寫主程式
#include <stdio.h> #include <iostream> #include "LinkQueue.cpp" using namespace std; int main(){ LinkQueue<int> Q; if(Q.Empty()){ cout << "Queue is empty!" << endl; } else { cout << "Queue is not empty!" << endl; } try{ Q.EnQueue(5); Q.EnQueue(10); } catch(char *wrong){ cout << wrong << endl; } Q.EnQueue(5); Q.EnQueue(10); cout << Q.GetQueue() << endl; try{ Q.DeQueue(); } catch(char *wrong){ cout << wrong << endl; } cout << Q.GetQueue() << endl; return 0; }
相關推薦
c++ 實現鏈佇列資料結構
建立標頭檔案LinkQueue.h#ifndef LinkQueue_h #define LinkQueue_h template <class DataType> //使用結構體定義結點 struct Node{ DataType data;
三、C++實現棧(stack)資料結構
本文使用C++實現棧資料結構,棧資料結構同之前實現的vector和list資料結構一樣都屬於線性序列結構,但是棧的資料操作範圍僅限於邏輯上的特定頂端,即只能對棧頂進行操作。由於棧結構具有的簡潔性和規範性,它既為構建更復雜、更高階資料結構的基礎,也是演算法設計的基本出發點。鑑於其的基礎性及使用的頻
C++實現鏈隊類——合肥工業大學資料結構實驗5:鏈式佇列
實驗5 5.1 實驗目的 熟練掌握佇列的順序鏈式儲存結構。 熟練掌握佇列的有關演算法設計,並在鏈佇列上實現。 根據具體給定的需求,合理設計並實現相關結構和演算法。 5.2 實驗要求 5.2.1鏈佇列實驗要求 本次實驗中的鏈佇列結構指不帶頭結點的單鏈表; 鏈佇列結構和運算定義,演算法的實現以庫檔
資料結構(c語言)——鏈佇列儲存結構及實現
是佇列鴨,FIFO,先進先出! 對於帶頭節點的和不帶頭節點的鏈佇列的操作有個小小的區別: 不帶頭結點的鏈佇列在入佇列的時候,第一個元素時要先判斷是否為空,再插入。而帶頭結點不需要,操作更方便些; 我是分割線-----------------------------
C語言 佇列的鏈式結構的實現與表示 資料結構 佇列的實現與表示
五一放假,也沒有什麼事情可以做的,本來想出去玩一玩或者打打球什麼的,可是天公不作美,這兩天天氣一直是在下雨,弄的人的心情溼透了。 昨天學習了一天的棧和佇列,昨天在下午些的時候完成了棧的程式設計工作。晚上本應該是用來寫完佇列的程式的,可是晚上到寢室熄燈之前只是差一點程式就
資料結構實驗4:C++實現迴圈佇列
實驗4 4.1 實驗目的 熟練掌握佇列的順序儲存結構和鏈式儲存結構。 熟練掌握佇列的有關演算法設計,並在迴圈順序佇列和鏈佇列上實現。 根據具體給定的需求,合理設計並實現相關結構和演算法。 4.2 實驗要求 4.2.1 迴圈順序佇列的實驗要求 迴圈順序佇列結構和運算定義,演算法的實現以庫檔案方式實
資料結構實驗4:C++實現迴圈佇列類
實驗4 4.1 實驗目的 熟練掌握佇列的順序儲存結構和鏈式儲存結構。 熟練掌握佇列的有關演算法設計,並在迴圈順序佇列和鏈佇列上實現。 根據具體給定的需求,合理設計並實現
C語言實現簡單的資料結構迷宮實驗
分析:迷宮實驗主要有兩部分操作,其一是對迷宮的生成,其二是尋路使用棧的操作。 步驟: 一、.h檔案 1、首先是迷宮的生成,可以使用隨機數種子生成,但主要邏輯部分並不在此,所以在這裡直接寫死,固定下來。 定義一個座標型別的結構體,和二維陣列迷宮: typedef
C語言實現鏈佇列的初始化&進隊&出隊
/*連結串列實現佇列的一系列操作*/ #include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 typedef struct node { int data;
C語言實現List的資料結構(很詳細的註釋)
新建一個list.c檔案 #include <stdio.h> #include <malloc.h> //動態分配記憶體 #include <stdlib.h> //exit 函式 #include <std
C語言實現(摘自資料結構與演算法分析 C語言描述)
一、概述: 棧(stack)是限制插入和刪除只能在一個位置上進行的表,該位置是表的末端,叫做棧的頂(top)。對棧的基本操作有Push(進棧)和Pop(出棧),前者相當於插入,後者則是刪除最後插入的元素。 棧有時又叫做LIFO(後進先出)表。在圖1中描述的模型只象徵著Pus
棧的鏈式結構表示與實現——自己寫資料結構
今天給大家介紹棧的鏈式結構,用dev-c++4.9.9.2除錯通過,少廢話直接上程式碼: 資料結構體存放檔案stacklist.h檔案如下 #ifndef _STACKLIST_H_ #define _STACKLIST_H_ typedef struct _No
C語言實現鏈佇列的基本操作
//標頭檔案內容 *************************************************鏈佇列.h******************************************************* #include<stdio.
c語言實現單鏈表資料結構及其基本操作
帶頭結點單鏈表。分三個檔案,分別為標頭檔案,測試檔案,原始碼檔案。 給出了單鏈表的部分操作,每個操作都有對應的註釋說明該函式功能。 test.c 檔案中,對輸入資料是否合法進行了檢測,但是並未實現輸入資料不合法時應該採取的措施。 測試檔案 通過一個選單來測試單鏈
C++實現棧數據結構
c++ c #ifndef __STACK__ #define __STACK__ class CStack { int * m_pData; int m_nCount; int m_nPos; public: CStack(int n
Java實現簡單的資料結構(五)
(5)二叉樹 public class BinaryTreeNode { private Comparable data; private BinaryTreeNode root; private BinaryTreeNode left; private BinaryTreeN
Java實現簡單的資料結構(四)
(4)Queue import org.junit.Test; public class Queue { private int size = 0; private LinkedList linkedList = new LinkedList(); /** * 入隊方法
Java實現簡單的資料結構(三)
(3)Stack package com.coding.basic; import org.junit.Test; public class Stack { private ArrayList elementData = new ArrayList(); /** * 壓棧
Java實現簡單的資料結構(二)
2.LinkedList import java.util.NoSuchElementException; import org.junit.Test; public class LinkedList implements List { private Node first;
Java實現簡單的資料結構(一)
利用Java語言實現簡單的資料結構,Java中動態擴容的ArrayList,LinkedList,Stack,Queue以及二叉樹 1.ArrayList import java.util.Arrays; import org.junit.Test; public class A