這篇也會補充前幾篇有誤或是容易犯錯的部分。
2019/6/7更新:
程設的最後一個題目(六),從上數來的第7張圖:
更新後:
完美 |
2019/6/7更新:
因為在加入資料部分真的比較難(我是說真的,爆幹難的),所以我把那部分的程式碼PO上來,讓大家參考。
注意:以下程式碼就真的只有"加入資料部分",如果你直接複製到Dev-C裡的話,它編譯不會給你過的。
注意:以下程式碼就真的只有"加入資料部分",如果你直接複製到Dev-C裡的話,它編譯不會給你過的。
if(first==NULL){ //如果是第一筆資料
cur=(struct list *)malloc(sizeof(struct list)); //開新記憶體空間
first=cur; last=cur; //把first跟last指向新開的記憶體空間
cur->data=n; cur->front=NULL; cur->next=NULL; //給 data 值 把指標都指好
}
else{//加入其它筆資料
if(n <= first->data){//n是使用者輪入的數字,先跟最前面的值比
//下面那些就是情況一的加入資料方法,詳情請看"程設的最後一個題目(六)" 情況一部分
cur=(struct list *)malloc(sizeof(struct list));
cur->data=n;
first->front=cur;
cur->next=first;
cur->front=NULL;
first=cur;
}
else{//下面是情況二的加入資料方法(插在兩筆資料中間)
trave=first->next; //最前面的資料在if那邊就檢查過了
while(trave!=NULL){ //如果沒有找到比 n 大的資料的話,就一直找下去,直到trave=NULL
if(trave->data >= n){//如果找到的話
//下面在做的事,不懂請看"程設的最後一個題目(六)"情況二部分
cur=(struct list*)malloc(sizeof(struct list));
cur->data=n;
trave->front->next=cur;
cur->front=trave->front;
cur->next=trave;
trave->front=cur;
break; //要記得離開迴圈
}
trave=trave->next; //往下筆資料找
}
if(trave==NULL){//如果trave等於NULL,就表示都沒找到比 n 大的資料
//下面在做的事,不懂請看"程設的最後一個題目(六)"情況三部分
cur=(struct list *)malloc(sizeof(struct list)); cur->data=n;
cur->front=last; cur->next=NULL;
last->next=cur;
last=cur;
}
}
}
2019/7/27 更新:
最近又把 Git
基本的東西重新學了一遍,終於會使用了,所以,之後跟程式碼有關的東西,我都會放到我的
GitHub 上。
這個功課的完整程式碼(真的拖好多天 XD )。
沒有留言:
張貼留言