【資料結構】環形佇列的基本操作
編譯環境VS2008
Queue.h
####為了解決順序佇列的假溢位的問題,設計了環形佇列
#pragma once #include <assert.h> #include <stdio.h> #define MAX_SIZE 8 typedef int DataType; typedef struct Queue { DataType _array[MAX_SIZE]; int _front; int _back; int _count; }Queue; //佇列的初始化 void QueueInit(Queue* q); //入佇列 void QueuePush(Queue* q,DataType data); //出佇列 void QueuePop(Queue* q); //判斷佇列是否為空 int QueueEmpty(Queue* q); //佇列的元素的個數 int QueueSize(Queue* q); //對頭元素 DataType QueueFront(Queue * q); //隊尾元素 DataType QueueBack(Queue* q);
Queue.c
#include "queue.h" //佇列的初始化 void QueueInit(Queue* q) { assert(q); q->_front = q->_back = 0; q->_count = 0; }; //入佇列 void QueuePush(Queue* q,DataType data) { assert(q); if(MAX_SIZE == q->_count) { printf("佇列已滿!!!\n"); return; } q->_array[q->_back++] = data; if(q->_back == MAX_SIZE) q->_back = 0; q->_count++; } //出佇列 void QueuePop(Queue* q) { assert(q); if(QueueEmpty(q)) { printf("佇列元素為空!\n"); return; } ++(q->_front); if(q->_front == MAX_SIZE) q->_front = 0; q->_count--; } //判斷佇列是否為空 int QueueEmpty(Queue* q) { assert(q); return q->_count == 0; } //佇列的元素的個數 int QueueSize(Queue* q) { assert(q); return q->_count; } //對頭元素 DataType QueueFront(Queue * q) { assert(q); return q->_array[q->_front]; } //隊尾元素 DataType QueueBack(Queue* q) { assert(q); if(0 != q->_back) return q->_array[q->_back-1]; return q->_array[MAX_SIZE-1]; }
test.c
#include "queue.h" void test(); int main() { test(); return 0; } void test() { Queue q; QueueInit(&q); QueuePush(&q,1); QueuePush(&q,2); QueuePush(&q,3); QueuePush(&q,4); QueuePush(&q,5); QueuePush(&q,6); printf("size = %d\n",QueueSize(&q)); printf("front = %d\n",QueueFront(&q)); printf("back = %d\n",QueueBack(&q)); QueuePop(&q); QueuePop(&q); printf("size = %d\n",QueueSize(&q)); printf("front = %d\n",QueueFront(&q)); printf("back = %d\n",QueueBack(&q)); }
相關推薦
【資料結構】環形佇列的基本操作
編譯環境VS2008 Queue.h ####為了解決順序佇列的假溢位的問題,設計了環形佇列 #pragma once #include <assert.h> #include <s
【資料結構】單鏈表-----基本操作
刪除指定位置的節點 void Erase(pList * pplist, pNode pos) { assert(pplist != NULL); assert(pos != NULL); if (*pplist == pos)//如果指向第一個節點
【資料結構】圖的基本操作——圖的構造(鄰接矩陣,鄰接表),遍歷(DFS,BFS)
鄰接矩陣實現如下: /* 主題:用鄰接矩陣實現 DFS(遞迴) 與 BFS(非遞迴) 作者:Laugh 語言:C++ ******************************************* 樣例輸出如下: 請選擇圖的型別(a - 無向圖, b - 有向圖):a 請輸入總頂點
【資料結構】迴圈佇列的認識和基本操作
迴圈佇列初始條件:隊頭指標(front)=隊尾指標(rear)=0 迴圈佇列隊滿條件:(rear+1)%size == front (size是順序表的最大儲存空間) 迴圈佇列空條件:隊頭指標(rear)=隊尾指標(front) 隊頭指標向前移動計算:隊頭指標=(rear+1)%size
【資料結構】環形連結串列
給定一個連結串列,判斷連結串列中是否有環。 思路分析: 判斷連結串列是否帶環,實際上歸屬於快慢指標問題,快指標先進環,慢指標後進環,然後快指標和慢指標最終會在環裡面相遇,如果不會相遇,則表示不是迴圈連結串列,也就是說到頭了,即不帶環。 具體程式碼如下: /**
【資料結構】順序表的操作函式
SeqList.h #ifndef __SEQLIST_H__ #define __SEQLIST_H__ #include <stdio.h> #include <assert.h> #include <malloc.h> #include <window
【資料結構】順序佇列的實現(C語言)
佇列的基本概念及其描述 佇列是一種特殊的線性表,它的特殊性在於佇列的插入和刪除操作分別在表的兩端進行。 插入的那一端稱為隊尾,刪除的那一端稱為隊首。佇列的插入操作和刪除操作分別稱為進隊和出隊。 先進先出(First In First Out) 順序佇列要掌握以下操作:
【資料結構】迴圈佇列的實現
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h> #define TURE 1 #define FALSE 0 #de
【資料結構】順序佇列
一、順序佇列的概念和分類 1、概念:順序佇列的底層結構是資料儲存元素的,用兩個整形數字來表示隊頭和隊尾的下標front和back 2、順序佇列根據出入元素方式不同分為兩種形式 二、程式碼展示 1、隊頭
【資料結構】迴圈佇列的應用(一)列印楊輝三角
列印楊輝三角 楊輝三角是比較常見的佇列的應用,下面一行的數是上面2個數字的和,數列首位都是1,高中數學裡牛頓二項式展開式應該有說。 程式碼收穫 這題主要是找規律。利用下面一行比上面一行數字多一個,佇列頭為上一行,除了入隊首尾的1之外,入隊的上一行2個數的和
【資料結構】迴圈佇列
上次實現了陣列佇列,這次來實現迴圈佇列 迴圈佇列的幾個要點,front指向隊頭元素,tail指向隊尾元素的下一個位置,front=tail時佇列為空,(front+1)% data.Length = tail時佇列為滿,還是會使用第一節所編寫的陣列類做最底層。
【C/C++】【資料結構】雙向連結串列操作
目錄 標頭檔案定義 測試檔案 雙向連結串列操作 像雙向連結串列的求長,判空,遍歷,查詢,檢索,之類的操作都和單鏈表一樣的。不過我還是在了文中。 標頭檔案定義 #ifndef _DOUBLELINKLIST_H_ #def
【資料結構】佇列的基本認識和佇列的基本操作
一.佇列的概念佇列是一種先進先出的線性表(棧是先進後出)。它只允許在表的一端進行插入,或者刪除元素。 進入插入操作的一端稱為隊尾(rear)(入佇列) 進行刪除操作的一端稱為對頭(front)(出佇列) 佇列具有先進先出的(FIFO)的特性二.順序佇列 1.隊頭不動,出
【資料結構】二叉樹基本操作
文章目錄 BinaryTree.h BinaryTree.c Test.c 棧和佇列的相關函式: 棧:https://blog.csdn.net/weixin_41892460/article/details/82
【資料結構】二叉搜尋樹的插入,刪除,查詢等基本操作的實現
1、基本概念 二叉搜尋樹:又稱二叉排序樹,它或者是一棵空樹,或者是具有以下性質的二叉樹 若它的左子樹不為空,則左子樹上所有節點的值都小於根節點的值 若它的右子樹不為空,則右子樹上所有節點的值都大於根節點的值 它的左右子樹也分別為二叉搜尋樹 沒有鍵值相等的節
【資料結構】線索二叉樹的基本操作 構造 找前驅 找後繼
上圖所示的二叉連結串列,存在多個空指標域。假設一個二叉連結串列的結點數為n,則共有2n個指標域。而n個結點的二叉樹共有n-1條分支。所以空指標域的個數為:2n - (n-1) = n+1。可以在這n+1個空指標域中儲存結點的(以先序、
【資料結構】--1.連結串列的基本操作和雜湊表定義
C實現連結串列的基本操作 初始化 插入 刪除 雜湊表的定義 //連結串列的基本操作 初始化 插入 刪除 雜湊表的定義 #include<iostream> using namespace std; typedef struct Node { int
【資料結構】單鏈表的實現與基本操作C++
最近在複習資料結構,自己用C++寫了單鏈表這一塊的一些程式碼。 以下是帶頭結點單鏈表的建立和查詢等的程式碼。 #include <iostream> using namespace std; //單鏈表 struct LNode{ int data; st
第四章 串的基本操作【資料結構】
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<malloc.h> #define ERROR 0 #define OK 1 #define MAXSIZE 1000 type
【資料結構】雜湊表及雜湊桶的基本操作
順序搜尋和二叉搜尋樹中,元素儲存位置和元素各關鍵碼之間沒有對應的關係,這就導致在查詢一個元素時,必須經過關鍵碼的多次比較。那麼是否有這樣一種資料結構,可以不經過任何比較,直接找到想要搜尋的元素呢?答案是肯定的,那就是通過某種函式(hashFunc)使得元素的儲存位置與它的