佇列 (Queue) ppt 下載 (動態配置)
又稱為隊列(queue),電腦科學中的一種抽象資料型別,是先進先出(FIFO, First-In-First-Out)的線性表。 在具體應用中通常用連結串列或者陣列來實現。

佇列
有兩個操作方式。
1. 放資料處。
2. 指向下一個資料。

有兩個操作方式。
1.put() //將資料加入佇列。(有些工程師會寫 Add())
2.get() //從佇列取出資料,需注意佇列是空的。(有些工程師會寫 Delete())

傳統非物件寫法:

傳統寫法
struct node{
	int data;
	node *next;
}*head=NULL;

void put(int x){//將資料 x 放入佇列 
	if(head==NULL){
		head=new node();//向系統要一份節點
		head->data=x;//把資料放到節點
		head->next=NULL;//下一筆接地
	}
    else{
    	node *p;
    	p=head;//
    	while(p->next!=NULL){//搜尋佇列到最後面,把資料加到最後面 
    		p=p->next;
		}
		p->next=new node();//向系統要一份節點,加入新的節點
		p=p->next;
		p->data=x;//把資料放到節點
		p->next=NULL;//下一筆接地
	}
}

int get(){ //從佇列取出料傳回
        if(head==NULL) { //空佇列
            std::cout << "Queue empty\n";
            return(-1);
        }
        else{
        	node *p=head;//暫時記住要取出的節點
        	int u;
        	head=head->next;//將開頭指向下一個節點
        	u=p->data;//取出節點內的資料
        	delete(p);//將節點歸還系統
        	return(u);
		}
}

int main() {
	put(110);
	put(34);
	cout << get() << endl;
	put(28);
	cout << get() << endl;
	cout << get() << endl;
	cout << get() << endl;
	put(79);
	cout << get() << endl;
	cout << get() << endl;
	return 0;
}
 


物件寫法
struct node{
	int data;
	node *next;
};

class Queue{
	private:
		node *head; 
	public:
		Queue(){
			head=NULL;
		}
		void put(int x){//將資料 x 放入佇列 
			if(head==NULL){
				head=new node();//向系統要一份節點
				head->data=x;//把資料放到節點
				head->next=NULL;//下一筆接地
			}
    		else{
    			node *p;
    			p=head;
    			while(p->next!=NULL){//搜尋佇列到最後面,把資料加到最後面 
    				p=p->next;
				}
				p->next=new node();//向系統要一份節點
				p=p->next;//加入新的節點
				p->data=x;//把資料放到節點
				p->next=NULL;//下一筆接地
			}
		}
		int get(){ //從佇列取出料傳回
        	if(head==NULL) { //空佇列
            	std::cout << "Queue empty\n";
            	return(-1);
        	}
        	else{
        		node *p=head;//暫時記住要取出的節點
        		int u;
        		head=head->next;//將開頭指向下一個節點
        		u=p->data;//取出節點內的資料
        		delete(p);//將節點歸還系統
        		return(u);
			}
		}
};
int main(int argc, char** argv) {
	Queue t;
	t.put(110);
	t.put(34);
	cout << t.get() << endl;
	t.put(28);
	cout << t.get() << endl;
	cout << t.get() << endl;
	cout << t.get() << endl;
	t.put(79);
	cout << t.get() << endl;
	cout << t.get() << endl;
	return 0;
}