佇列是一種特殊的線性表,它只允許在表的前端,可以稱之為front,進行刪除操作;而在表的後端,可以稱之為rear進行插入操作。佇列和堆疊一樣,是一種操作受限制的線性表,和堆疊不同之處在於:佇列是遵循「先進先出」原則,而堆疊遵循的是「先進後出」原則。佇列進行插入操作的端稱為隊尾,進行刪除操作的稱為隊頭,只允許在隊尾進行插入操作,在隊頭進行刪除操作。
佇列的資料元素又稱為佇列元素,在隊尾中插入乙個元素稱為入隊,在隊頭刪除乙個元素稱為出隊。具體實現參考**:
class data
public function getdata()
public function __destruct()
}class queue
//初始化佇列
private function initq($size)
//判斷隊空
public function qisempty()
//判斷隊滿
public function qisfull()
//獲取隊首資料
public function getfrontdate()
//入隊
public function inq($data)
$this->queue[$this->rear+1]=new data($data);
//print_r($this->queue);
//echo $this->front;
echo '入隊成功!
'; }
} //出隊
public function outq()
}}$q=new queue(3);
$q->inq("小苗");
$q->inq('馬帥');
$q->inq('溜冰');
$q->inq('張世佳');
$q->outq();
$q->inq("周瑞曉");
$q->outq();
$q->outq();
$q->outq();
$q->outq();
本案例中有兩個類:
第乙個是data類,用於實現資料的存放以及佇列元素的入隊出隊情況;
第二個是queue類,用於佇列元素的一些入隊出隊操作。
佇列中包含四個屬性:
front(佇列的頭部)
rear(佇列的尾部)
maxsize(佇列的長度,即佇列元素個數)
queue(存放所有已入隊佇列元素的物件)
場景說明:
1.初始化佇列時,生成乙個佇列,傳入乙個引數作為maxsize初始化佇列把隊尾rear設為0,隊頭front也設為0,此時queue中只有0號元素,並且rear和front都指向它。
2.入隊時,先需要判斷佇列是否已滿(front-rear == maxsize),如果已滿不可在插入,如果未滿則允許插入。插入時,front自增,然後依次讓佇列所有元素向前移動一位(讓出隊尾位置以便插入新元素),然後生成新的data物件插入到隊尾位置。
3.出隊時,判斷佇列是否為空(front == rear),如果為空時,無法出隊。如果不為空時,刪除front指向的物件,並且front自減,完成出隊。
執行結果如下:
小苗:哥進隊了!
入隊成功
馬帥:哥進隊了!
入隊成功
溜冰:哥進隊了!
入隊成功
張世佳:我一來咋就滿了!(隊滿不能入隊,請等待!)
小苗:哥走了!
出隊成功!
周瑞曉:哥進隊了!
入隊成功
馬帥:哥走了!
出隊成功!
溜冰:哥走了!
出隊成功!
周瑞曉:哥走了!
出隊成功!
隊空不能出隊!
隊空不能出隊!
看完絕對懂的IFC
ifc inline formatting context 行內格式化上下文。與塊級元素形成對比,當元素的 css 屬性 display 的計算值為 inline,inline block,inline table,inline flex 或 inline grid 時,它是行內級元素。視覺上它將內...
php 命名空間詳細介紹,看完就懂
php的命名空間 namespace 是php5.3之後才有的。這個概念在c 中已經很早就有了,php中的namespace其實和c 的概念是一樣的。假設如果不使用namespace,那麼每個類在乙個專案中的名字就必須是固定的。因為php在new的時候不管是呼叫autoload還是呼叫已載入過的類,...
Android熱修復(簡單實現,秒懂)
花了兩天時間研究了一下熱修復,簡單的實現了一下,至於原理,大家可以檢視一下網上的資料,很詳細,並且不難,看一遍就懂,這裡就簡單介紹下如何實現,廢話不說,直接搞起。第一步 把有問題修復好的類打成dex包。1.1 找到dx.bat的目錄,配置下環境變數,配置完環境變數需要關閉cmd在開啟cmd就可以了。...