日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

循环队列_数组实现

發布時間:2024/4/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 循环队列_数组实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

循環隊列是指, 隊尾指針走到末尾后, 還可以繼續從頭開始走.

front指針仍然是指向第一個元素的前一個元素, rear指針指向最后一個元素.
下面我們重點討論一下循環隊列如何判斷空和滿的問題?
我下面判斷隊列空和滿是直接根據q->length屬性來判斷, 當q->length為0,
表示隊列為空, 當q->length = maxSize - 1時, 隊列為滿. 由于遍歷上的原因,
隊列的最大長度只能是數組最大長度-1.

#include <stdio.h> #include <stdlib.h>struct queue {int* data;int front;int rear;int maxSize;int length; }; typedef struct queue node; typedef struct queue* link;// 函數聲明 link createQueue (int maxSize); void printQueue (link q); int add (link q, int x); int del (link q);int main () {int i;int maxSize = 10; // 隊列的最大長度link qhead = createQueue(maxSize);// 初始隊列信息printQueue(qhead);// 基本入隊測試for (i=1; i<=10; i++) {add(qhead, i * 2);}printQueue(qhead);// 基本出隊測試del(qhead);del(qhead);del(qhead);del(qhead);printQueue(qhead);// 循環入隊測試add(qhead, 100);add(qhead, 200);add(qhead, 300);add(qhead, 400);add(qhead, 500);printQueue(qhead);return 0; }// 創建空隊列 link createQueue (int maxSize) {link q;q = (node*)malloc(sizeof(node));q->data = (int*)malloc(sizeof(int) * maxSize);q->front = -1;q->rear = -1;q->length = 0;q->maxSize = maxSize;return q; }// 打印 void printQueue (link q) {int i;printf("當前隊列的信息如下: \n");printf("front = %d\n", q->front);printf("rear = %d\n", q->rear);printf("length = %d\n", q->length);printf("maxSize = %d\n", q->maxSize);// 打印隊列中的數據if (q->length == 0) {printf("當前隊列中沒有數據\n");} else {printf("隊列中的數據如下: \n");i = q->front;while (i != q->rear) {i = (i + 1) % q->maxSize;printf("%d %d\n", i, q->data[i]);}}printf("\n"); }// 入隊 int add (link q, int x) {if (q->length == q->maxSize -1 ) {printf("隊列已滿, 不能入隊\n");return 0;}q->rear = (q->rear + 1) % q->maxSize;q->data[q->rear] = x;q->length++;return 1; }// 出隊 // 錯誤返回0, 正確返回被出隊元素的值 int del (link q) {if (q->length == 0) {printf("隊列為空, 不能出隊\n");return 0;}q->front = (q->front + 1) % q->maxSize;q->length--;return q->data[q->front]; }

轉載于:https://www.cnblogs.com/asheng2016/p/7615741.html

總結

以上是生活随笔為你收集整理的循环队列_数组实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。