資料結構必須掌握內容佇列--入隊,出隊
棧的壓棧出棧的順序是: 先進後出 ; 但是佇列的入隊和出隊是:先進先出。 我上一篇實現了棧的壓棧出棧,這次實現的佇列的先進先出,廢話不多說,附上程式碼和執行結果:
#include"stdafx.h" #include<iostream> using namespace std; typedef class queue { public: int *pbase; int front; int rear; }QUEUE; void initqueue(QUEUE *);//初始化佇列 bool full_queue(QUEUE *);//判斷佇列是否已滿 bool en_queue(QUEUE *,int);//入隊 void traverse_queue(QUEUE *);//遍歷佇列 bool empty(QUEUE *);//判斷佇列是否為空 bool out_queue(QUEUE *,int *);//出隊 void initqueue(QUEUE *pq) { pq->pbase=new int[6]; pq->front=0; pq->rear=0; } bool full_queue(QUEUE *pq) { if((pq->rear+1)%6==pq->front) return true; else return false; } bool en_queue(QUEUE *pq,int val)//入隊操作r,取r,p->rear即是r,然後進行操作 { if(full_queue(pq)) return false; else { pq->pbase[pq->rear]=val; pq->rear=(pq->rear+1)%6 ;//這裡相當於陣列下標r=(r+1)%6,p->rear就是取r的值,然後p->rear+1是先取r的值,然後加1,最後再對長度取餘 return true; } } void traverse_queue(QUEUE *pq)//遍歷佇列,需要定義一個下標進行操作 { int i=pq->front;//這裡定義一個數組下標,進行佇列的遍歷 if(i==pq->rear) cout<<"為空"<<endl; else { while(i!=pq->rear) { cout<<pq->pbase[i]<<" "; i=(i+1)%6;//所有環型陣列的遞增都是(n+1)%長度,所以i的遞增也要滿足 } } } bool empty(QUEUE *pq) { if(pq->front==pq->rear) return true; else return false; } bool out_queue(QUEUE *pq,int *val) { if(empty(pq)) { cout<<"出隊失敗..."<<endl; return false; } else { *val=pq->pbase[pq->front]; pq->front=(pq->front+1)%6; cout<<"出隊成功,出隊元素為:"<<*val<<endl; return true; } } int main() { int val,n; QUEUE Q; initqueue(&Q); for(n=1;n<6;n++) { en_queue(&Q,n); } traverse_queue(&Q); out_queue(&Q,&val); traverse_queue(&Q); system("pause"); return 0; }
最後說一句,萬事開頭難,貴在堅持!加油,何永健!
相關推薦
資料結構必須掌握內容佇列--入隊,出隊
棧的壓棧出棧的順序是: 先進後出 ; 但是佇列的入隊和出隊是:先進先出。 我上一篇實現了棧的壓棧出棧,這次實現的佇列的先進先出,廢話不多說,附上程式碼和執行結果: #include"stdafx.h"
資料結構必須掌握 棧---壓棧和出棧
今天剛學到壓棧出棧,就把這個具體過程都實現了一遍,廢話不多說,程式碼如下:#include"stdafx.h" #include<iostream> using namespace st
C語言 ,單鏈表實現佇列(初始化,入隊,出隊,元素個數,隊首元素,是否為空)
單鏈表實現佇列: 連結串列為空的判斷條件:pQueue->pFront==pQueue->pRear或者若結構體中存在數的個數時,判斷pQueue->size==0,即元素個數為0 標頭檔案:佇列.h #pragma once #include<
鏈佇列的初始化,入隊,出隊,計算隊的長度,遍歷鏈隊銷燬佇列
#include "stdio.h" #include "stdlib.h" typedef struct node{ int data; struct node *next; }*pnode; typedef struct queue{ pnode front; pno
迴圈佇列的順序儲存實現(入隊,出隊,清隊,銷燬隊,遍歷等)
迴圈佇列的順序儲存實現,包括入隊,出隊,清隊,銷燬隊,遍歷佇列等 佇列(queue)是一種先進先出(first in fist out,縮寫為FIFO)的線性表,它只允許在表的一端進行插入,而在另一端進行刪除元素。允許插入的一端稱為隊尾(rear),允許刪除的一
鏈佇列的簡單操作(入隊,出隊,輸出隊元素等)
定義一個節點,裡面包含元素型別,指向下一個節點的指標。然後定義一個結構體,裡面兩個指標,指向隊頭和隊尾 typedef struct QNode { int data; struct QNode * next; }QNode, * Queue; typedef s
js資料結構 -- 連結串列, 雙向連結串列,迴圈連結串列
陣列作為js常用的資料結構,存取元素都非常的方便,但是其內部的實現原理跟其他計算機語言對陣列的實現都是一樣的。 由於陣列在記憶體中的儲存是連續的,所以當在陣列的開頭或者中間插入元素時,內部都需要去移動其他元素的位置,這個移動元素的成本很高。 連結串列也是儲存有序的元素集合,但不同
建立一個順序佇列,實現佇列的入隊和出隊操作。
標頭檔案: #ifndef seqqueue_H #define seqqueue_H const int queuesize=10; class seqqueue { int rear,front; int data[queuesize]; public: seqqueue(){front
Python資料結構之: 棧與佇列
棧(stacks) 是一種只能通過訪問其一端來實現資料儲存與檢索的線性資料結構,具有後進先出(last in first out,LIFO)的特徵 stack = [] stack.append("A") #A入棧 stack.append("B") #B入棧 st
資料結構 鏈式佇列C/C++
列隊分為鏈式儲存 與 順序儲存 下面給出小編寫的順序儲存的連結https://blog.csdn.net/qq_40990854/article/details/82846939 這篇是小編寫的鏈式儲存。 思路: 佇列是一個先進先出的特點,在連結串列的表頭 head作為固定不動的
我理解的資料結構(三)—— 佇列(Queue)
我理解的資料結構(三)—— 佇列(Queue) 一、佇列 佇列是一種線性結構 相比陣列,佇列對應的操作是陣列的子集 只能從一端(隊尾)新增元素,只能從另一端(隊首)取出元素 佇列是一種先進先出的資料結構(FIFO) 二、陣列佇列與迴圈佇列 1. 陣列佇列 如果你有看過我之前
作為阿里雲年薪500k大資料工程師必須掌握以下三種技能
阿里雲 大資料在近幾年的發展速度確實超出人們的預料,自2014年3月“大資料”首次出現在《政府工作報告》中以來,國務院常務會議一年內6次提及大資料運用,而且不管是在數博會還是今年的G20當中,大資料“存在感”極高。我是一個大資料程式設計師,建了一個大資料資源共享群5931
資料結構(四)佇列
一、基本概念 1、特點: 在佇列頭部進行刪除,在佇列的尾部進行插入操作 2、主要實現: 使用迴圈陣列 使用連結串列 3、關係圖: 二、Queue public interface Queue<E> extends
資料結構 - 基於陣列的佇列
佇列Queue *佇列也是一種線性結構 *相比於陣列,佇列對應的操作是陣列的子集 *只能從一端(隊尾)新增元素,從另一端(隊首)取出元素 *佇列是一種先進先出的資料結構(先到先得 First In First Out) 基於陣列的佇列實現的原始碼如下:
資料結構筆記-棧與佇列python實現
概述 棧與佇列是程式設計中被廣泛應用的兩種重要的資料結構,都是在特定範圍的儲存單元記憶體儲資料,這些資料都可以被重新取出使用,與線性表相比,他們的插入和刪除受到更多的約束,固又稱限定性的線性表結構。他們是最簡單的快取結構,他們只支援資料項的儲存與訪問,不支援資料項之間的任何關係。因此,這兩種
資料結構與演算法之佇列篇
1、如何理解"佇列"? 類比棧,棧只支援兩個基本操作:入棧push()和出棧pop()。對於佇列的基本操作也只有兩個:入隊enqueue(),放一個數據到佇列尾部;出隊dequeue(),從佇列頭部去一個元素。(如下圖) 2、順序佇列和迴圈佇列 用陣列實現的佇
Java資料資料結構(三)——佇列
今天但看了大二資料結構這本書,對佇列進行一個整理。 文章目錄 一、什麼是佇列 二、順序陣列實現佇列 三、迴圈陣列實現佇列 四、連結串列實現佇列 一、什麼是佇列 佇列和棧一樣,都是一種受限制的線性表。佇列元素只能從隊尾插入(稱為入隊
java版資料結構與演算法—優先順序佇列
/** * 優先順序佇列,排好序的佇列插入和刪除 */ class PriorityQueue { int a[]; int maxSize; int nItems; public PriorityQueue(int size){ maxS
資料結構之雙端佇列(Deque)
1,雙端佇列定義 雙端佇列:其兩端都可以入列和出列的資料結構,如下圖所示,佇列後面(rear)可以加入和移出資料,佇列前面(front)可以加入和移出資料 雙端佇列操作: deque=Deque() # 建立雙端佇列 addFront(item) #在佇列前面加入資料 a
看得見的資料結構Android版之佇列篇
零、前言 1.現實世界裡我們更多講究的是先來後到,先排隊先買票,這樣才有秩序,畢竟我們沒有計算機那麼有耐心 2.使用佇列結構能很好的模擬和解決類似生活中的事,比如訊息的傳送用佇列維護就是非常恰當的 3.佇列就像去動物園買票,先處理佇列的頭部,有新的人來了就後面排著去,慢慢等 4.還有一種很有意思的佇列