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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

线性表-----队列

發(fā)布時間:2023/12/1 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线性表-----队列 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、基本概念

  • 隊列是只允許在一端進行插入而在另一段進行刪除線性表
  • 隊頭:允許刪除的一端
  • 隊尾:允許插入的一端
  • 空隊列:沒有任何元素的空表

隊列是操作受限的線性表,因此不是任何對線性表的操作都可以作為隊列的操作,比如,不可以隨便讀取隊列中間某個數(shù)據(jù)

2、順序隊列

隊列的順序實現(xiàn)是指分配一塊連續(xù)存儲單元存放隊列中的元素,并設兩個指針front和rear分別指向隊頭和隊尾元素的元素。隊尾rear指針指向隊尾元素的下一個位置(也可以讓rear指向隊尾元素,front指向隊頭元素的前一個位置),為什么要這樣處理呢?當隊列中只有一個元素是,rear和front將會相等,處理起來很麻煩。

  • 初始狀態(tài)(隊空條件):front==rear==0
  • 進隊:不滿時,送值到隊尾,隊尾rear加1
  • 出隊:不空時,取隊頭元素,隊頭front加1
/* 順序隊列 */ typedef struct {ElemType data[MaxSize];int front, rear; }SqQueue;


當此時隊列的狀態(tài)為上圖的d時,在入隊,現(xiàn)任此時rear再加一會出現(xiàn)溢出,但這種溢出并不是真正的溢出,在data數(shù)組里依然有位置存放數(shù)據(jù),所以這是一種假溢出

2、循環(huán)隊列

把存儲隊列元素的表從邏輯上看作是一個環(huán),稱為循環(huán)隊列。當用循環(huán)隊列時,上面順序隊列出現(xiàn)假溢出的問題就能解決

  • 初始時,Q.front=Q.rear=0
  • (出隊) front指針加1:Q.front=(Q.front+1)%MaxSize
  • (入隊)rear指針加1:Q.rear=(Q.rear+1)%MaxSize
  • 隊列長度:(Q.rear-Q.front+MaxSize)%MaxSize
  • 出隊入隊指針按順時針方向進1

如何判斷隊列空和隊滿呢?

法1:犧牲一個單元來區(qū)分隊空和隊滿,入隊時少用一個隊列單元,這是個普遍的做法,約定以:隊頭指針在隊尾指針的下一個位置作為隊滿的標志

  • 隊滿:(Q.rear+1)%MaxSize==Q.front
  • 隊空條件:Q.front==Q.rear(注意和順序隊列區(qū)分開,Q.front==Q.rear==0)
  • 隊中元素個數(shù):(Q.rear-Q.front+MaxSize)%MaxSize


法2:類型中增設表示元素個數(shù)的數(shù)據(jù)成員。這樣,

  • 隊空的條件為Q.size==0
  • 隊滿:Q.size==MaxSize

法3:類型增設tag數(shù)據(jù)成員,以區(qū)分隊滿還是隊空。tag等于0時,若因刪除導致QQ.front==Q.rear,則為對空;tag等于1時,若因插入導致Q.front==Q.rear,則為隊滿

3、鏈式隊列

隊列的鏈式存儲結構,其實就是線性表的單鏈表,只不過需要加點限制,只能在表尾插入,表頭刪除。

typedef struct {ElemType data;struct LinkNode* next; }LinkNode; typedef struct {LinkNode* front, * rear; }LinkQueue;
  • 當 Q.front ==NULL && Q.rear==NULL時,鏈式隊列為空

4、雙端隊列

雙端隊列是指允許兩端都可以進行入隊和出隊操作的隊列,將隊列的兩端分別稱為前端和后端,不再是隊頭和隊尾,其邏輯結構依然是線性結構。

輸出受限的雙端隊列:允許在一端進行插入和刪除,但在另一端只允許插入的雙端隊列被稱為輸出受限的雙端隊列

輸入受限的雙端隊列:允許在一端進行插入和刪除,但另一端只允許刪除的雙端隊列稱為輸入受限的雙端隊列

總結

以上是生活随笔為你收集整理的线性表-----队列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。