1. 程式人生 > >C++插入及取出佇列資料可以任意修改設定的佇列長度

C++插入及取出佇列資料可以任意修改設定的佇列長度

// queue.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
/*
int main(int argc, char* argv[])
{
printf("Hello World!\n");
return 0;
}*/

#include<stdio.h>  
#include<malloc.h>        //包含了malloc函式  


/* 
 *迴圈佇列,用陣列實現 
 */  
//佇列結構體定義  


#define QueueLenth 12   //改變佇列結構長度
typedef struct Queue  
{  
    int * pBase;    //用於動態分配記憶體,pBase儲存陣列的首地址  
    int front;      //指向頭結點  
    int rear;       //指向最後一個元素的下一結點  
} QUEUE;  
//函式宣告  

/* 
 *初始化函式的實現 
 */  
void initQueue(QUEUE * pQueue)  
{  
    //分配記憶體  
    pQueue->pBase = (int *)malloc(sizeof(int) * 12);          //分配6個int型所佔的空間  
    pQueue->front = 0;       //初始化時,front和rear值均為0  
    pQueue->rear = 0;  
    return;  
}  


/* 
 *判斷佇列是否滿的函式的實現 
 */  
bool isFull(QUEUE * pQueue)  
{  
    if((pQueue->rear+1) % QueueLenth == pQueue->front)     //佇列滿  
        return true;  
    else  
        return false;  
}  
/* 
 *判斷佇列是否為空函式的實現 
 */  
bool isEmpty(QUEUE * pQueue)  
{  
    if(pQueue->front == pQueue->rear)  
        return true;  
    else  
        return false;  
}


/* 
 *入隊函式的實現 
 */  
bool enQueue(QUEUE * pQueue, int value)  
{  
    if(isFull(pQueue))  
    {  
        printf("佇列已滿,不能再插入元素了!\n");  
        return false;  
    }  
    else  
    {  
        //向佇列中新增新元素  
        pQueue->pBase[pQueue->rear] = value;  
        //將rear賦予新的合適的值  
        pQueue->rear = (pQueue->rear+1) % QueueLenth;  
        return true;  
    }  
}  


/* 
 *出隊函式的實現 
 */  
bool outQueue(QUEUE * pQueue, int * pValue)  
{  
    //如果佇列為空,則返回false  
    if(isEmpty(pQueue))  
    {  
        printf("佇列為空,出隊失敗!\n");  
        return false;  
    }  
    else  
    {  
        *pValue = pQueue->pBase[pQueue->front];       //先進先出  
        pQueue->front = (pQueue->front+1) % QueueLenth;      //移到下一位置  
        return true;  
    }  
}  
/* 
 *遍歷佇列的函式實現 
 */  
void traverseQueue(QUEUE * pQueue)  
{  
    int i = pQueue->front;           //從頭開始遍歷  
    printf("遍歷佇列:\n");  
    while(i != pQueue->rear)     //如果沒有到達rear位置,就迴圈  
    {  
        printf("%d  ", pQueue->pBase[i]);  
        i = (i+1) % QueueLenth;              //移到下一位置  
    }     
    printf("\n");  
    return;  
}  


/* 
 *主程式 
 */  
int main(int argc, char* argv[])
{  
    int value;          //用於儲存出隊的元素  
    //建立佇列物件  
    QUEUE queue;  
    //呼叫初始化佇列的函式  
    initQueue(&queue);  
    //調用出隊函式  
    enQueue(&queue, 1);  
    enQueue(&queue, 2);  
    enQueue(&queue, 3);  
    enQueue(&queue, 4);  
    enQueue(&queue, 5);  
    enQueue(&queue, 6);  
    enQueue(&queue, 7);  
    enQueue(&queue, 8);  
   enQueue(&queue, 9);  

相關推薦

C++插入取出佇列資料可以任意修改設定佇列長度

// queue.cpp : Defines the entry point for the console application. // #include "stdafx.h" /* int main(int argc, char* argv[]) {printf("Hello World!\n");re

C語言程式設計》資料——C語言中轉義字元

下面是C語言中的轉義字元及其意義:轉義字元意義ASCII碼值(十進位制)\a響鈴(BEL)007\b退格(BS) ,將當前位置移到前一列008\f換頁(FF),將當前位置移到下頁開頭012\n換行(LF

C# WebBrowser控制元件插入JS程式碼並執行,可以修改js就能對html執行任意操作

//方法1 HtmlElement element2 = webQzone.Document.CreateElement("script"); element2.SetAttri

C# 資料批量插入更新

          *table為更新表名或插入資料表    SqlConnection conn = new SqlConnection(sqlConStr);             SqlCommand comm = conn.CreateCommand();    

C# -- 使用遞迴列出資料夾目錄目錄下的檔案

使用遞迴列出資料夾目錄及目錄的下檔案 1.使用遞迴列出資料夾目錄及目錄下檔案,並將檔案目錄結構在TreeView控制元件中顯示出來。 新建一個WinForm應用程式,放置一個TreeView控制元件:   程式碼實現:在Form_load的時候,呼叫遞迴方法載入檔案目錄結構在TreeVi

《大話資料結構4》—— 佇列的順序儲存結構 (迴圈佇列)—— C++程式碼實現

   佇列  ● 佇列的概念:   佇列(簡稱作隊,Queue)也是一種特殊的線性表,佇列的資料元素以及資料元素間的邏輯關係和線性表完全相同,其差別是線性表允許在任意位置插入和刪除,而佇列只允許在其一端進行插入操作在其另一端進行刪除操作。 佇

《大話資料結構5》—— 佇列的鏈式儲存結構 —— C++程式碼實現

目錄 鏈佇列 迴圈佇列和鏈式佇列的比較 鏈佇列 ●  實現佇列的最好的方式就是使用單鏈表來實現,佇列的鏈式儲存結構,其實就是線性表的單鏈表,只不過它只能尾進頭出而已——稱為鏈佇列。 ● 那為了操作方便,頭指標指向頭結點,隊尾指標指向終端節點,即最後一個結點元

[資料結構&基操][C++]一個二維網狀資料結構基本操作

一是因為上學期學了資料結構,二是因為面對物件的程式設計學的不精,我便用資料結構做了一個資訊管理系統作為C艹大作業。 沒想到居然拿了優秀 ψ(`∇´)ψ (不管難否,反正是筆者五級分制中唯一的優秀)   先上資料結構圖   貼程式碼 結構體: ​t

C# 選擇檔案、選擇資料夾、開啟檔案(或者資料夾) 路徑中獲取檔案全路徑、目錄、副檔名、檔名稱 追加、拷貝、刪除、移動檔案、建立目錄 修改檔名、資料夾名!!

https://www.cnblogs.com/zhlziliaoku/p/5241097.html 1、選擇檔案用OpenDialog OpenFileDialog dialog = new OpenFileDialog(); dialog.Multiselect = true;/

從cimutils到核心-(6)VIDIOC_DQBUF(從視訊快取佇列取出資料的buffer)

應用層:     case IO_METHOD_MMAP: CLEAR(buf); buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; buf.memory = V4L2_MEMORY_MMAP; if (-1 == xio

軟考:資料結構基礎——迴圈佇列C語言實現

  迴圈佇列得實現: 1.     在入隊和出隊時,我們通過      q->rear = (q->rear +1)%MAX_LENTH 來實現迴圈入隊     q

有時候從後臺獲取的資料層次比較多,導致修改vue的資料後沒有對dom進行重新渲染

解決辦法 vm.$forceUpdate() 示例: 迫使 Vue 例項重新渲染。注意它僅僅影響例項本身和插入插槽內容的子元件,而不是所有子元件。 methods: { selectInsurance(){ //重新整理可選狀態 for(var i=0; i<this.da

如何學習C++之資料看哪些,Visual C++入門深入程式設計

(小編推薦一個學C語言/C++的學習群【 639912742】,入群即送C/C++全套學習資料) 學習C++有一小段時間了,剛開始的時候總感覺資料不知道看哪些比較好,於是總是比較耗費時間來找資料。相信大家在剛開始的時候也是這樣的。如果你是C++新手並想認真學習C++,以及想深入學習C++,那

資料結構】順序佇列的實現(C語言)

佇列的基本概念及其描述 佇列是一種特殊的線性表,它的特殊性在於佇列的插入和刪除操作分別在表的兩端進行。 插入的那一端稱為隊尾,刪除的那一端稱為隊首。佇列的插入操作和刪除操作分別稱為進隊和出隊。 先進先出(First In First Out) 順序佇列要掌握以下操作:

Chrome的快取使用者資料位置修改

對於一個電腦潔癖來說,不喜歡把資料留在c盤。用了chorme後,本篇部落格記錄下快取及使用者資料位置修改的方法。 方案一: 這是在桌面快捷方式中設定命令引數的修改方式。右鍵——屬性——快捷方式——目標: 在目標(T)一欄chrome.exe"後面新增 --us

Linux學習筆記(演算法與資料結構)之 佇列程式碼(C語言)

1、程式碼在VS2010的C++編譯器中編譯通過,可能有極少部分語法不符合C89標準;bool型別無法使用,用int代替 2、由於VS配置問題,沒有分.c和.h檔案書寫;如果要分,最好將Create_Node和Destory_Node加上static關鍵字修飾,他們只會在所

C程式設計 | C語句資料的輸入輸出

C程式結構 C語句的分類 控制語句 函式呼叫語句 表示式語句 空語句 複合語句 (1)控制語句:控制語句用於完成一定的控制功能,C共有9種控制語句 if()…else…(條件語句) for()…(迴圈語句) while()…(迴圈語句) do…whil

資料結構---棧和佇列(例題、練習解答)

棧的應用 Q1:簡單表示式求值 限定的簡單表示式求值問題是使用者輸入一個包含+、-、*、/、正整數和圓括號的合法算術表示式,計算該表示式的結果。 思路:(1)將算術表示式轉換成字尾表示式 (2)字尾表示式求值 具體執行程式碼: #include <

資料結構(C語言版 嚴蔚敏著)——棧和佇列

棧的定義: · 書本定義:棧是一個後進先出的線性表,它只要求只在表尾 進行刪除和插入操作。 · 通俗定義:棧就是一個特殊的線性表(順序表,連結串列),操作上有一些特殊性:     -棧的元素必須“後進先出”。     -棧的操作只能在這個線性表的表尾進行。    

C++資料結構 9 順序佇列

佇列:先進先出(FIFO)或者後進後出(LILO) #ifndef __QUEUE_H_ #define __QUEUE_H_ #include <iostream> #include <algorithm> using namespace s