佇列與棧一樣,是一種線性儲存結構,特點:先進先出;隊尾新增元素,對頭刪除元素
佇列的操作:
入隊:通常命名為push()
出隊:通常命名為pop()
求佇列中元素個數
判斷佇列是否為空
獲取隊首元素
佇列的分類
根據儲存結構劃分:順序儲存結構、鏈式儲存結構
順序儲存結構
特點:事先要確定佇列的大小,不支援動態分配記憶體空間
鏈式儲存結構
特點:可以不需要事先知道佇列的大小,支援動態分配儲存空間,插入和刪除操作比較耗時
**1實現如下:
//迴圈佇列初始化、判空、判滿、入隊、出隊、輸出佇列元素
//迴圈佇列計算佇列長度:(tail-head+maxsize) % maxsize
#include
#include
#define maxsize 6
using
namespace std;
typedef
struct node queue1;
//佇列初始化
void
initqueue
(queue1 *q)
//判空
bool
isempty
(queue1 *q)
//判滿
bool
isfull
(queue1 *q)
else
return
false;}
//入佇列 隊尾入 入隊元素e
intenqueue
(queue1 *q,
int e)
else
}//出佇列 隊頭出 輸出隊頭元素e
intdequeue
(queue1 *q,
int*e)
else
}// if (isempty(q1))
// else
else
}return1;
}int
main()
**2實現如下:
#include
#include
#define maxsize 5
using
namespace std;
//佇列的順序儲存結構及實現
typedef
struct lnode* queue1;
//定義乙個具有 lnode結構的佇列
typedef
int queuedata;
//queuedata是int的別名
//定義佇列結構體
struct lnode
;//初始化佇列
void
initlnode
(queue1 q1)
//判斷佇列是否是滿的
bool
isfull
(queue1 q1)
//判空
bool
isempty
(queue1 q1)
//隊尾插入元素
bool
insertq
(queue1 q1, queuedata x)
else
}//隊頭刪除元素,用e返回其值
intdeleteq
(queue1 q1, queuedata *e)
else
}int
main()
**1與**2的實現的區別是結構體定義方式不同,在**2中,在main()函式內需要單獨申請記憶體空間,如果不申請,會一直報錯:區域性變數q未初始化。
另外一種直接呼叫的方式:
#include
#include
using
namespace std;
intmain()
node,
*queueptr;
typedef
struct
linkqueue;
//建立乙個空佇列 佇列初始化
bool
initqueue
(linkqueue *q)
//入隊 新建乙個節點,隊尾插入
intenqueue
(linkqueue *q,
int e)
s->data = e;
s->next =
null
;//把新元素插入到原隊尾的後面
q->rear-
>next = s;
q->rear = s;
return1;
}//出隊 若佇列不空,刪除q的隊頭元素,並用e返回其值
//出隊時,就是將頭結點的後繼節點出隊,將頭結點的後繼更改為它後面的節點
intdequeue
(linkqueue *q,
int*e)
intmain()
最大的感受就是記著給節點分配記憶體!! 資料結構 佇列
一 佇列的迴圈陣列實現。1 初始化 空佇列。令rear front 0。2 入佇列 約定rear指向佇列尾元素的下乙個位置。入佇列時,先判斷佇列是否已滿,而後將array rear x 然後rear 3 出佇列 約定front指向佇列的首元素位置。出佇列時,先判斷佇列是否為空,而後返回隊首元素re ...
資料結構 佇列
資料參考自 資料結構c 語言描述 佇列是一種先進先出的資料結構,這與棧正好相反。下例是簡單的queue實現 queue.h檔案 ifndef queue h define queue h include include 資料元素結構 自定義 struct datatype 佇列元素最大數 const...
資料結構 佇列
code for fun created by dream whui 2015 1 25 include stdafx.h include include using namespace std define true 1 define false 0 define ok 1 define erro...