![]()
作業九說明(此題需附說明檔)
目標:Linked
List的練習
題目:使用LinkedList來記錄捷運乘客的通勤紀錄,列出各個乘客的通勤紀錄,並可透過query()這個function查詢某個車站有哪些人到過。
注意:
作業請壓成ZIP檔,檔名為學號即可(如b92902062),若有新的版本則(如b92902062_2)。
FTP 資訊如下
只要交c檔和說明文件即可,不用包含執行檔。
IP: 140.112.218.112
PORT: 21
ID: hw9
Passwd: hw9
開放時間: 現在到星期三(1/14)早上8點
FTP關閉後的算遲交,就改用原本寄信的過來。
說明:
首先,Structure Definition 定義兩個新的型別,分別是personalData跟tourlist。
struct personNode { char *name; //紀錄人名 struct personNode *p_next; //用以指向下個人 struct tourNode *t_list; //用以指向進出的紀錄 }; struct tourNode { char *start; //起站 char *end; //終站 struct tourNode *next; //指向下個進出的紀錄 };接著用上面定義的structure和檔案(filename:input.txt)中的資料建立Linked List,如下圖
檔案中每一行,前面為人名,後面為地點,如Jones ACM就是Jones從ACM(進入/離開)。
當有新的人名出現時,就需要新的personNode來記錄他個人的進出紀錄;若是此人名已經存在,就加在這個人現有的Linked List中。
而檔案中人名的奇數次出現表示為進入(紀錄在start),下次出現就是離開(紀錄在end)。
一旦有人進入,他就一定會離開。建立好之後,將結果輸出到螢幕上。
最後讓使用者輸入站名查詢,然後列出曾有哪些人在這個站進出過(不斷重複詢問,不需定義中斷字元,按Ctrl-C即可)。
範例:
輸入可參見所給的檔案(input.txt),而所建出來的架構就是上圖中的。
輸出的結果則如下(以空隔隔開)
Hill PTT PTT2
Penny Lake Station NTU Hospital
Mcdyess IEEE ACM ACM PTTWhich station do you want to check? PTT
IN:Hill(列出曾從此進入的人)
OUT:Mcdyess(列出曾從此出去的人)假如有重複進入的人, 只需列出一次就可以了
繳交期限:93年1月13日