C++插入及取出佇列資料可以任意修改設定的佇列長度
//
#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