【資料結構作業】佇列
#include <iostream> #include <queue> using namespace std; class LinkQueue; //連佇列前視說明 class LinkQueueNode { friend class LinkQueue; public: LinkQueueNode(int &e, LinkQueueNode *p = NULL):elem(e), next(p){}; //節點類的建構函式 private: int elem; //資料域 LinkQueueNode *next; //指標域 }; class LinkQueue { public: LinkQueue():front(NULL), rear(NULL){}; //構造一個空佇列 ~LinkQueue(); //解構函式,銷燬佇列 int IsEmpty() const //判斷是否為空 { return front == NULL; } void LinkQueueClear(); //請空鏈佇列 int LinkQueueLength() const; //求鏈佇列長度 int Getfront(); //返回鏈頭元素值 void InQueue(int &e); //入隊 int OutQueue(); //出隊,並返回值 private: LinkQueueNode *front, *rear; //定義隊頭隊尾指標 }; LinkQueue::~LinkQueue() { LinkQueueNode *p; while(front != NULL) { p = front; front = front->next; delete p; } } int LinkQueue::LinkQueueLength() const { LinkQueueNode *p = front; int i = 0; while(p) { i++; p = p->next; } return i; } int LinkQueue::Getfront() { if(IsEmpty()) { cout << "The Queue is Empty!" << endl; exit(0); } else return front->elem; } void LinkQueue::InQueue(int &e) { if(front == NULL) front = rear = new LinkQueueNode (e, NULL); else rear = rear->next = new LinkQueueNode(e, NULL); } int LinkQueue::OutQueue() { if(IsEmpty()) { cout << "The Queue is Empty!" << endl; exit(0); } LinkQueueNode *p = front; int e = p->elem; front = front->next; if(front == NULL) rear = NULL; delete p; return e; } int main() { int n, m; cin >> n >> m; LinkQueue Q; for(int i = 0; i < n; i++) { Q.InQueue(i); } for (int j = 0; j < m; j++) { Q.OutQueue(); } int a = Q.Getfront(); int b = Q.LinkQueueLength(); cout << a << " " << b << endl; Q.~LinkQueue(); return 0; }
相關推薦
【資料結構作業】佇列
#include <iostream> #include <queue> using namespace std; class LinkQueue; //連佇列前視說明 class LinkQueueNode { friend clas
【資料結構 四】---佇列
佇列簡介 佇列的特點 佇列(Queue)是隻允許在一端進行插入,而在另一端進行刪除的運算受限的線性表。 (1)允許刪除的一端稱為隊頭(Front)。 (2)允許插入的一端稱為隊尾(Rear)。 (3)當佇列中沒有元素時稱為空佇列。 (
【資料結構作業三】利用棧(以順序棧作儲存結構)實現二、十和十六進位制轉換
#include <iostream> #define MAXSIZE 100 using namespace std; typedef int SElemType; typedef struct { SElemType *base; SElemType
【資料結構作業五】以鄰接表作儲存結構,廣度遍歷圖的優先搜尋序列
#include <iostream> #define MVNum 100 #define MAXQSIZE 100 using namespace std; typedef char ElemType; typedef int QElemType; typed
【資料結構--Heap】堆
堆(英語:Heap)是電腦科學中的一種特別的樹狀資料結構。若是滿足以下特性,即可稱為堆:“給定堆中任意節點 P 和 C,若 P 是 C 的母節點,那麼 P 的值會小於等於(或大於等於) C 的值”。若母節點的值恆小於等於子節點的值,此堆稱為最小堆(英語:min heap);反之,若母節點的值
【資料結構排序】POJ1804——歸併排序求逆序數
問題描述: 給定一個數組,問最少經過多少次交換,才可以使得它有序 求解方法: 實際上就是求該陣列的逆序數,使用歸併排序即可 AC程式碼如下: #include<cstdio> #in
【資料結構查詢】POJ1840——求五元三次方程的整數解個數
問題描述: 給定五元三次方程的全部係數,求出解不等於0且為[−50,50][-50,50][−50,50]之間的整數的個數。 求解方法: 將後兩項移到等式的右邊,並將前三項的全部結果遍歷出來並打表
【資料結構查詢】POJ2002——判斷座標點組成正方形的個數
問題描述: 給定二維座標軸上面的座標點,求出它們一共可以組成多少個正方形 求解方法: 將他們按照橫座標由小到大排列(相等則按照縱座標排列),然後遍歷取出其中的兩個點,根據兩個點縱座標的大小關係和兩
【資料結構01】緒論-考研程式碼書寫規範與語言基礎
決定將一些內容敲成部落格以供自己複習和使用 僅供參考。 ///////////////////////////////////////////////////////////////////////
【資料結構筆記】哈夫曼樹的構造演算法
原教材《資料結構教程》(第5版)李春葆 主編(武漢大學資料結構課程教材) 《演算法筆記》那本書上並沒有直接給出哈夫曼樹的構造程式碼,特此記錄一下。 核心程式碼: typedef struct{
資料結構作業9—佇列(選擇題)
2-1若已知一佇列用單向連結串列表示,該單向連結串列的當前狀態(含3個物件)是:1->2->3,其中x->y表示x的下一節點是y。此時,如果將物件4入隊,然後佇列頭的物件出隊,則單向連結串列的狀態是: (1分) A.答案不唯一 B.2->3-&g
資料結構作業9—佇列(判斷題)
1-1所謂“迴圈佇列”是指用單向迴圈連結串列或者迴圈陣列表示的佇列。 (1分) T F 作者: DS課程組 單位: 浙江大學 1-2不論是入佇列操作還是入棧操作,在順序儲存結構上都需要考慮"溢位"情況。 (2分) T F
【資料結構筆記】Leetcode買賣股票的最佳時機 系列總結
121.買賣股票的最佳時機 給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 如果你最多隻允許完成一筆交易(即買入和賣出一支股票),設計一個演算法來計算你所能獲取的最大利潤。 注意你不能在買入股票前賣出股票。 示例 1: 輸入: [7
【資料結構基礎】雙向約瑟夫問題
約瑟夫問題是一個經典的問題,我們不妨將這個經典問題進行擴充套件,變成一個雙向的約瑟夫問題。 已知 n 個人(不妨分別以編號 1,2,3,...,n 代表 )圍坐在一張圓桌周圍,首先從編號為 k 的人從 1 開始順時針報數,1, 2, 3, ...,記下順時針數到 m 的那個人,同時從編號為 k 的人
【資料結構演算法】約瑟夫環問題(線性表)
據說著名猶太曆史學家 Josephus有過以下的故事:在羅馬人佔領喬塔帕特後,39 個猶太人與Josephus及他的朋友躲到一個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了一個自殺方式,41個人排成一個圓圈,由第1個人開始報數,每報數到第3人該人就必須自殺,然後再由下一個重新報數,直到所有人都自殺
【資料結構基礎】哈夫曼編碼/譯碼課程設計
#include<stdio.h> #include<stdlib.h> #include<string.h> #define N 20 typedef struct { char ch; int wei
【資料結構演算法】如何使用棧計算字尾表示式
無聊寫的一個使用棧計算字尾表示式的程式碼: 初次寫,只有+-*/四個運算子,後面可以自己加,都差不多就是個算術運算子優先順序的問題。 主函式:包括初始化*+-/符號,判斷輸入的字元是運算元還是運算子。 /** * !!!!!(棧相關測試) * @author WZ
【資料結構筆記】三、樹與二叉樹
課程是中國大學MOOC浙江大學出的資料結構。 作為一個數據結構愛好者,我覺得很有必要稍微整理下各章節的筆記,對知識進行梳理。 查詢 首先,老師從“查詢”入手,查詢分為靜態和動態,演示了靜態查詢的例程,並介紹了‘建立哨兵’的思想。而這個例程使用的是普通的順序
【資料結構專題】線性表之單鏈表
對比了好幾本書,比較少涉及單鏈表的賦值,為了親自跑出其他功能,花了不少時間,畢竟是打基礎嘛,相信以後會越來熟練(你為什麼那麼熟練,明明是我先~)話不多說,下面是程式碼及實驗結果。 #include <cstdio> #include
【資料結構05】紅-黑樹基礎----二叉搜尋樹(Binary Search Tree)
目錄 1、二分法引言 2、二叉搜尋樹定義 3、二叉搜尋樹的CRUD 4、二叉搜尋樹的兩種極端情況 5、二叉搜尋樹總結 前言 在【演算法04】樹與二叉樹中,已經介紹