[C++ ] 有關於很多人搞不懂的作業一

看板NTUE-CS104作者 (P.K)時間12年前 (2012/03/20 02:34), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串1/1
大略看了一下程式 很多人實際上搞不太懂老師是在教什麼 或者不知道在幹嘛 先附上 範例程式碼 應該只有這次會這樣做吧 #include<iostream> #include<cstdlib> // DEV C++ 5ed以上需要include using namespace std; int main(void){ int *array[6]; //用來存位址的指標陣列 for(int i=0;i<6;i++){ array[i]=NULL; //將指標陣列全部接地初始化(NULL為空) } int t=0,input=0,count=0; cout<<"要輸入多少數字?(1~5)\n"; cin>>count; //計算要輸入多少數字 int *pointer=NULL; //用來指向被new出來的空間之指標 for(int i=0;i<count;i++){//依序new出空間並輸入數字 cin>>input; //其實14-16行可以縮成兩行但這樣寫取址取值不熟的人 //應該比較看得懂 pointer=new int; // (要縮減的話就不需要input變數) *pointer=input; //雖是多此一舉 但是實際上就是把input存進pointer指 //標指向的空間裡 array[t]=pointer; //將位址存入指標陣列 t=input; //這次存的數字指向下一個要到的指標陣列之編號 所 //以要暫存 } t=0; //純粹需要一個變數代表陣列編號 所以拿之前的變數來 //利用 while(array[t]!=NULL){ //將路徑重新追蹤一遍 cout<<*(array[t])<<" "; t=*(array[t]); } system("pause"); } 因為我覺得老師出的這項作業有點奧妙 經過變形後 雖然有一些串列(Link-list)的精神 但實際上以後也不太可能會這樣用了 因為這就要提到所謂串列(Link-list)跟陣列(Array)的差別 以後大二資料結構會詳細的提到 主要的不同在 陣列(Array) 宣告完後 空間就完全固定了 無法再往上增加 因為陣列是連續的空間 無法利用之後的宣告 把新的空間加在之前的陣列後面 而串列(Link-list)就如字面上的表達 有連接...(好像在說廢話) 實際上就是分散在記憶體各處的空間 利用指標串連 連成一群可以被利用的大空間 舉例說 就像汪洋的大海上有許多破碎的"小島" 每一座島的土地都很少 但所有的島嶼加起來就不得了 如果你想利用所有的土地 就必須造橋(指標)通往其他島嶼(空間) 然後造橋的規則是只能走單向 而且一座島只能從一座橋出去 然後從第一座島嶼(Head) 到最後一座(NULL) 會連成像鍊子一般 就像下圖 第一座島(Head)--這是橋(指標)--> 島嶼(空間) --這是橋(指標)--> 島嶼(NULL) 中間的部分可以一直重複的 只要有需要 就可以隨時加蓋(新增空間) 至於為什麼只能有一座單向的橋 (只有一個指標指向下個空間) 是因為如果蓋太多橋會浪費太多成本(也就是"空間" 指標也是要用空間存的) 在古老吋bit吋金的年代 可不允許人浪費空間 依造上面的資料結構 我們只能從頭(head)進入串列 所以所以要找中間某座島時會比較麻煩 就像有個探險家從第一座島出發 一定要經過很多座島才能到達自己想要的地方 因為橋(指標)就是這樣蓋(指)的 不像陣列可以指定某個編號直接讀取 大致上就像上面所提的 所以陣列方便找尋資料 串列方便增加空間 這個就是他們的優點與限制 如果還是看不太懂我舉的例子的話 可以想像一下 像RO那樣的遊戲 地圖一定有傳送點傳到下一個地圖 地圖就像資料 傳送點就像指標 這樣講不知道有沒有FU 哈哈 各位加油吧!! -- ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄    ▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄    ▄▄▄▄▄▄ ▄▄▄▄無數次實驗證明▄▄▄▄    ▄▄▄▄▄▄▄▄ ▄▄▄▄▄ 機會是自己撞出來的     ▄▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄      ▄▄▄▄▄ ________ █████████████████████████▌ █ ██▌ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.127.36.184

03/20 11:48, , 1F
PKㄉㄉ
03/20 11:48, 1F

03/22 06:41, , 2F
嘴角失守>\\\< 在玩RO的時候看到這篇 XD 感謝學長!!
03/22 06:41, 2F

03/22 06:48, , 3F
突然覺得玩RO有意義
03/22 06:48, 3F

05/02 21:01, , 4F
include <list>
05/02 21:01, 4F
文章代碼(AID): #1FPtmXJl (NTUE-CS104)