搜尋此網誌

2019年6月6日 星期四

程設的最後一個題目(END)

    我後來想了想,把整個程式碼PO上去好像不太好,還是讓同學順著前幾章教的東西,把完整的程式碼拼湊出來,這樣寫程式的能力才能有所提升,完整的程式碼我會在6/13後才在這一篇更新。

    這篇也會補充前幾篇有誤或是容易犯錯的部分。






2019/6/7更新:

程設的最後一個題目(六),從上數來的第7張圖:



更新後:

完美



2019/6/7更新:


    因為在加入資料部分真的比較難(我是說真的,爆幹難的),所以我把那部分的程式碼PO上來,讓大家參考。

注意:以下程式碼就真的只有"加入資料部分",如果你直接複製到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 )。

沒有留言:

張貼留言