看板 NTUE-CS102 關於我們 聯絡資訊
說好3/31的時候要PO的程式碼 抱歉慢了幾天XD 看在期限延後大家就不要這麼在意了 哈哈 --- 先review一下問題(簡單版) 有兩個區域 跟六個方塊 分別堆成 ---┐ 1 │→[1]→[2]→[3]→NULL ---┘ ---┐ 2 │→[4]→[5]→[6]→NULL ---┘ 這次我用到的class class block { int data; block *next; public: int getdata() { return data; } void setdata(int d) { data=d; } block *getnext() { return next; } void setnext(block *n) { next=n; } }; 用的都是之前的東西 沒有新的 然後是main 首先把東西堆成一開始的樣子 int main() { // 準備兩個head(區域1,2) // 六個方塊(b[0]不用) // *p,*q是while那裡搜尋用的 block head1, head2, b[7], *p, *q; int i, x, y; // 把方塊上面設定數字 for(i=1;i<=6;i++) { b[i].setdata(i); } // 串起來! head1.setnext(&b[1]); b[1].setnext(&b[2]); b[2].setnext(&b[3]); b[3].setnext(NULL); head2.setnext(&b[4]); b[4].setnext(&b[5]); b[5].setnext(&b[6]); b[6].setnext(NULL); 這裡要很清楚 . 和 -> 的差別 setnext是block的函數 所以block的物件 例如 block a; 就要用 a.setnext(somethnig); 如果是block的指標 例如 block *p; 就要用 p->setnext(somethnig); 設定好之後 就是輸入x,y的無窮主迴圈 // cout cout<<"請輸入x,y 將方塊x移到區域y(x=1~6, y=1~2),"; cout<<"輸入0 0印出目前各區域上的方塊\n\n"; // 主迴圈 while(true) { cout<<"請輸入x,y 將方塊x移到區域y: "; cin>>x>>y; // 輸入0 0 if(x*y==0) { // 印出第一區 cout<<"1: "; p=head1.getnext(); while(p!=NULL) { cout<<p->getdata()<<" "; p=p->getnext(); } cout<<endl; // 印出第二區 cout<<"2: "; p=head2.getnext(); while(p!=NULL) { cout<<p->getdata()<<" "; p=p->getnext(); } cout<<endl; } // 不是0 0 else { // 假設要找的方塊x在第一區 p=&head1; while(p!=NULL && p->getdata()!=x) { q=p; p=p->getnext(); } // 找不到=>在第二區 if(p==NULL || p->getdata()!=x) { p=&head2; while(p!=NULL && p->getdata()!=x) { q=p; p=p->getnext(); } } // q是原本方塊前面的那個人, 通知他一下後面沒人了 q->setnext(NULL); // 看要移到哪區 找那區的最後一個人 if(y==1) p=&head1; else p=&head2; while(p!=NULL) { q=p; p=p->getnext(); } // 接上去! q->setnext(&b[x]); } } } 步驟很簡單 假設輸入 1,2 就是把 方塊1 移到 區域2 所以要 1. 先找到 方塊1 前面的人 接NULL 方塊1 可能在 區域1 或是 區域2 可以先假設它在 區域1 找不到 再找 區域2 找到她前面的人 再接NULL 2. 接著就串列跟插後面一樣 去 區域2(要移到的地方) 找最後面 接上 方塊1 3. 完成了 程式碼全部貼起來 就可以work了 這樣可以拿到一分 看懂用自己的方法寫 可以拿到2分 寫9區9方塊 可以拿到3分 作業該交的時間是星期三半夜 大家加油囉XD! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.127.36.183
borg110878:洗板XD 04/05 19:55
j2612280:good~~ 04/05 21:22
Arashinoon:我要趕回台北做了 GG 這台電腦沒有C++ 04/05 22:01
j2612280:Dev-C++簡址 http://307.uuu.to/ 就是要宣傳一下XD~ 04/05 22:02
Arashinoon:不想用你給的網址咧~~~~ 04/05 22:03
suan710:樓上學長的網址快用 04/05 23:53
j2612280:冏... 04/06 00:02
joe989879:超棒!! 04/07 15:13