<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      線性結構常見應用之隊列[基于郝斌課程]

      定義:

      ??一種可以實現“先進先出”的存儲結構

      ??隊列類似于排隊買票

      分類:

      ??鏈式隊列:基于列表

      ??靜態隊列:基于數組

      ????靜態隊列通常都必須是循環隊列

      ??????靜態隊列為什么是循環隊列?

      ????????減少對內存的浪費

      ????????用傳統數組來實現隊列的話,參數只能加不能減

      ??????循環隊列需要幾個參數來確定以及各個參數的含義

      ????????需要兩個參數來確定:front 和 rear

      ????????兩個參數不同場合有不同的含義

      ??????????隊列初始化: front 和 rear 都是0

      ??????????隊列非空:front 代表的是隊列的第一個元素, rear 代表的是隊列的最后一個有效元素的下一個元素

      ??????????隊列空:front 和 rear 是相等的,但是不一致是0

      ??????循環隊列的入隊偽算法

      ????????rear = (rear + 1) % 數組的長度

      ??????循環隊列的出隊偽算法

      ????????front = (front + 1) % 數組的長度

      ??????如何判斷循環隊列是否為空?

      ????????如果 front == rear,則隊列為空

      ??????如何判斷循環隊列是否已滿?

      ???????front 和 rear 大小沒有規律,可以 front 比 rear 大,也可以是 front 比 rear 小?

      ???????規定放入的元素比數組長度少1,只要 rear 和 front 相鄰,則滿了

      ???????如果 ((rear + 1) % 數組長度) == front,則隊列滿了

      隊列的應用:

      ??所有和時間有關的操作都與隊列有關

      
      /*
      @file      main.c
      @brief     線性結構常見應用之隊列
      @author    EricsT (EricsT@163.com)
      @version   v1.0.0
      @date      2025-09-24
      @history   2025-09-24 EricsT - 新建文件
      */
      
      #include <stdio.h>
      #include <malloc.h>
      
      #define LEN 6
      
      typedef struct QUEUE
      {
      	int* pBase;
      	int front;
      	int rear;
      }Queue, *PtrQueue;
      
      
      void InitQueue(PtrQueue ptrQueue);//初始化
      bool InQueue(PtrQueue ptrQueue, int inValue);//入隊
      bool OutQueue(PtrQueue ptrQueue);//出隊
      bool isEmptyQueue(const PtrQueue ptrQueue);//判斷是否為空
      bool isFullQueue(const PtrQueue ptrQueue);//判斷是否滿了
      void TraverseQueue(const PtrQueue ptrQueue);//遍歷
      
      int main(void)
      {
      	Queue queue;
      
      	InitQueue(&queue);
      
      	if (isEmptyQueue(&queue))
      		printf("隊列為空\n");
      	else
      		printf("隊列不空\n");
      
      	int inVaule;
      
      	printf("請輸入要入隊的值:");
      	scanf("%d", &inVaule);
      	InQueue(&queue, inVaule);
      
      	printf("請輸入要入隊的值:");
      	scanf("%d", &inVaule);
      	InQueue(&queue, inVaule);
      
      	printf("請輸入要入隊的值:");
      	scanf("%d", &inVaule);
      	InQueue(&queue, inVaule);
      
      	printf("請輸入要入隊的值:");
      	scanf("%d", &inVaule);
      	InQueue(&queue, inVaule);
      
      	printf("請輸入要入隊的值:");
      	scanf("%d", &inVaule);
      	InQueue(&queue, inVaule);
      
      	printf("請輸入要入隊的值:");
      	scanf("%d", &inVaule);
      	InQueue(&queue, inVaule);
      
      	printf("請輸入要入隊的值:");
      	scanf("%d", &inVaule);
      	InQueue(&queue, inVaule);
      
      	if (isEmptyQueue(&queue))
      		printf("隊列為空\n");
      	else
      		printf("隊列不空\n");
      
      	if (isFullQueue(&queue))
      		printf("隊列已滿\n");
      	else
      		printf("隊列未滿\n");
      
      	TraverseQueue(&queue);
      
      	OutQueue(&queue);
      
      	TraverseQueue(&queue);
      
      	return 0;
      }
      
      void InitQueue(PtrQueue ptrQueue)
      {
      	ptrQueue->pBase = (int*)malloc(sizeof(int) * LEN);
      	ptrQueue->front = 0;
      	ptrQueue->rear = 0;
      }
      
      bool InQueue(PtrQueue ptrQueue, int inValue)
      {
      	if (isFullQueue(ptrQueue))
      		return false;
      
      	ptrQueue->pBase[ptrQueue->rear] = inValue;
      	ptrQueue->rear = (ptrQueue->rear + 1) % LEN;//從后面加入
      
      	return true;
      }
      
      bool OutQueue(PtrQueue ptrQueue)
      {
      	if (isEmptyQueue(ptrQueue))
      		return false;
      
      	ptrQueue->front = (ptrQueue->front + 1) % LEN;//先進先出//從前面出去
      
      	return true;
      }
      
      bool isEmptyQueue(const PtrQueue ptrQueue)
      {
      	if (ptrQueue->front == ptrQueue->rear)
      		return true;
      
      	return false;
      }
      
      bool isFullQueue(const PtrQueue ptrQueue)
      {
      	if (ptrQueue->front == ((ptrQueue->rear + 1) % LEN))
      		return true;
      
      	return false;
      }
      
      void TraverseQueue(const PtrQueue ptrQueue)
      {
      	int i = ptrQueue->front;
      
      	while (ptrQueue->rear != i)
      	{
      		printf("%d ", ptrQueue->pBase[i]);
      		i = (i + 1) % LEN;
      	}
      
      	printf("\n");
      }

       

      posted @ 2025-09-24 16:21  EricsT  閱讀(17)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 天堂网www在线资源网| 国产一区精品综亚洲av| 湘潭市| 色伦专区97中文字幕| 91久久亚洲综合精品成人| 国产在线98福利播放视频| 亚洲精品岛国片在线观看| 日韩成人一区二区二十六区| 伊人久在线观看视频| 色九月亚洲综合网| 日本韩无专砖码高清观看| 日韩深夜福利视频在线观看 | 亚洲综合高清一区二区三区| 麻豆tv入口在线看| 日韩放荡少妇无码视频| 中方县| 国产女同一区二区在线| 久久天天躁综合夜夜黑人鲁色| 久久天天躁夜夜躁狠狠躁2022| 在线视频中文字幕二区| 天天影视色香欲综合久久| 天堂√最新版中文在线地址| 国产自产一区二区三区视频| 国产亚洲一二三区精品| 人妻中文字幕不卡精品| 精品无码人妻| 亚洲最大成人av在线天堂网| 国产综合久久亚洲综合| 中文字幕无码专区一VA亚洲V专| 成全影院电视剧在线观看| 福利一区二区不卡国产| 中文字幕色av一区二区三区| 久久96热在精品国产高清| 在线观看热码亚洲av每日更新| 亚洲一区二区精品偷拍| √天堂资源网最新版在线| 亚洲av与日韩av在线| 日韩精品中文字幕亚洲| 一边吃奶一边摸做爽视频| 国产极品粉嫩学生一线天| 国产精品久久久久久久久人妻|