如何在佇列內加上優先順序 |
尚未結案
|
metals753
一般會員 發表:7 回覆:3 積分:2 註冊:2005-05-23 發送簡訊給我 |
一個佇列的程式:
分別有1.Enqueue 2.Dequeue 3.Print
現在必需在Enqueue的時候增加一個優先順序(數值越小優先順序越高)
在Dequeue時則會自動先選擇優先順序(seq)->高的先Dequeue出,若一樣則先進先出
我卡在優先順序的地方,不知道該如何寫起...麻煩請各位指導一下...
#include |
haman
中階會員 發表:46 回覆:137 積分:56 註冊:2005-03-10 發送簡訊給我 |
基本上你的問題就是排序(一個加了排序的佇列??@@")
在enqueue的時後從頭一一與新加入的值做比對,
若queue中的值小於(或等於)新增的值時,將前一筆資料的next指到新的這筆,
再將新的這筆資料的next指到大於的那一筆
說穿了就是link list中的插入 附上以前寫的link list的插入函數
struct link { struct link *left; int value; struct link *right; }; int Insert(link *head,int value,int num) { link *tmp,*ptr; ptr=head->right; tmp=(link *)malloc(sizeof(link)); while(ptr->value!=num) { if(ptr->right==head) return -1; else ptr=ptr->right; } tmp->value=value; tmp->right=ptr->right; ptr->right=tmp; tmp->left=ptr; tmp->right->left=tmp; return 1; }==================================== 懂的不多,卻想學的更多,搞得不自覺的將問題複雜化@@ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |