首頁    課程資訊    參考資料    作業    考試    成績

作業說明(此題需附說明檔)

     目標:Linked List的練習                  

     題目:使用LinkedList來記錄捷運乘客的通勤紀錄,列出各個乘客的通勤紀錄,並可透過query()這個function查詢某個車站有哪些人到過。

     注意:

作業請壓成ZIP檔,檔名為學號即可(如b92902062),若有新的版本則(如b92902062_2)。

FTP 資訊如下
IP: 140.112.218.112
PORT: 21
ID: hw9
Passwd: hw9
開放時間: 現在到星期三(1/14)早上8點

只要交c檔和說明文件即可,不用包含執行檔。
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 PTT

Which station do you want to check? PTT
IN:Hill(列出曾從此進入的人)
OUT:Mcdyess(列出曾從此出去的人)

假如有重複進入的人, 只需列出一次就可以了

     繳交期限:93年1月13日

作業抄襲者,一律F