NTUE-CS101 板


LINE

其實不用想的那麼複雜 現在程式要做的事情有 1. 輸入資料 2. 產生節點 3. 找到節點在串列裡面的位置 4. 插進去 上禮拜是把 3 簡化成 所有新的節點的位置都是 head 現在需要思考一下 怎麼找到新的節點 他的後一個跟前一個 這裡先把這三個點取個名字 新的這個點叫做 p 他後面那個點(比他大的)叫做 q1 他前面那個點(比他小的)叫做 q2 ( p, q1, q2 都是 指標 ) 為什麼需要q1和q2? 先看第四步你就知道了 在串列裡面 不管你要擦頭 擦屁 還是擦中間 一定要有的步驟是 把前面一個人屁股的那條線接到你頭上 把你屁股上的線貼到後面那個人臉上 寫成程式就是 q2->setNext(p); p->setNext(q1); 再回來想 3 怎麼寫 找到串列裡面的位置 想想我上禮拜有跟你們說把串列印出來的方法(走得很匆忙那次) q=head; while(q!=NULL) { cout<<q->getNo(); q=q->getNext(); } 先解釋一下 q=head; // 從頭開始 while(q!=NULL) // 如果 q 不是接地 ( 沒有東西了 ) cout // 把 q 印出來 q=q->getNext(); // getNext()是傳回下一個人的位址 ( 你的函數名字可能不一樣 ) // 所以 q 會指向他下一個人 OK 把 cout 拿掉然後改一下這個就可以用在 3 了 q1=head; // 用來存 p 的下一個 ( 比他大的那個 ) 人的指標 q2=NULL; // 用來存 p 的前一個 ( 比他小的那個 ) 人的指標 while(q1!=NULL && q1->getNo() < p->getNo() ){ q2=q1; q1=q1->getNext(); } // 迴圈裡面一樣 q1 指向 q1 的下一個 // 先看 while 裡面條件 如果 q1 比 p 的數字小的話 就代表還要往下找 // 這時 先把原本的 q1 存到 q2 ( 等下舉例說明 ) // 然後 q1 指到他下面的那個人 說明一下為什麼要 q2=q1 假設你的串列已經有 1 5 7 要把 6 插進來 一開始 q1=1, q2=null ; 1 < 6 所以要繼續找 q1=5, q2=剛才的q1=1 ; 5 < 6 繼續往下 q1=7, q2=剛才的q1=5 ; 7 > 6 所以這就是他的位置 這時 從while迴圈裡面跳出來 把 5 ( q2 ) 接到 6 ( p ) 把 6 ( p ) 接到 7 ( q1 ) -- 解釋部份到這裡結束 -- 完整程式碼參考 http://0rz.tw/io1uG 這個是示意版 只有串列的部份 至於每個節點內的資料我只有設定作號 老師要求的其他資料就自己試著加上去吧 有問題在msn問我 掰XD ※ 引述《gingkoginkgo (人中拉拉!)》之銘言: : ※ 引述《didi12252001 (撒嬌)》之銘言: : : 有誰把程式寫出來的 : : 今天王老大的作業 : : 我卡題了 : : 哪個寫的出來的交一下吧 : 大致上思考流程如下 //這是當年的我寫的 說不定有錯 不過給個方向就是 : 插頭 : 1.產生新node 指定data : 2.新node連結到head : 3.head=新node : 插屁屁 : 情形(1)head=NULL時 直接連上去 : 情形(2)head!=NULL時 : 1.p=head //make sure head exist : 2.利用P移動到下一個(next)直到next=NULL : 從小到大 : 1.先決定要3->5->6 還是9->8->2 : 2.考慮三種情況:插頭.插屁屁或是插中間 : 第一次 head->□ 進for洄圈 : node* temp=new node; : node*p = new node; : 上面這串的結果是 temp→□(temp指到一個新的) : p→□(p也是指到一個新的) : temp=head->next; 這串的話,就是讓Temp指到NULL, : 因為你head只到的物件, : 並沒有串到任何物件然後又讓 : p=temp->next; : temp本身就沒指到東西了,又讓p指過去, : 所以還是沒任何意義到最後就變成 : head→□ □ □ 成功只有head, : 剩下的兩個就失連了 : 其實也可以爬爬100級的版? 看當年學長我(?)是怎麼跌跌撞撞到頭很痛XD : 不過現在仍舊頭痛中就是 : 其實作法有很多種 : 也可以說你就先生出個空的頭 這個頭不放任何資料 只是指向下一個 : 你就會意外的發現好像有比較簡單嘍.... : 其實個人覺得Link list畫圖很重要 : 會把架構和你要做的事清楚的看明白 : 如果你能嚐試講出你每一步再做什麼 那大概就OK了 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.68.15.209
1F:推 rockmyangel:真的棒 我可能快要 稍微懂了 04/02 20:49
2F:→ rockmyangel:越來越難了欸 大家努力阿 04/02 20:49
3F:推 didi12252001:我有完整版的 包然有的沒的標準 還包含英英註解 04/03 00:00
4F:推 didi12252001:要先上傳的找我拿檔案吧 04/03 00:00







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP