2016年11月17日 星期四

【程式】資料結構專題

  幾乎每年都會認識一些資訊班的學弟妹,大多也會跑來問我關於資訊班傳統慣例的「資料結構」專題。這個專題的目的很簡單,就是要大家對資料結構有更多的認識。然而僅僅只是寫一個簡單的系統顯然不太能滿足現在學弟妹的胃口,前年回去看專題發表,大家也是越做越華麗了~顯然這些有趣的特效很吸引大家,我也決定來寫一些關於這些有趣特效的介紹。

不過首先我們還是得從專案結構開始講起,怎樣的主題比較適合做成專題?舉個簡單的例子就是便條紙。這個系統不外乎就是新增、編輯、檢視和刪除,再加上一點互動跟特效就可以包成好看有趣的系統。按照這個節奏我們的便條紙系統可能會長這樣:

 [1] 新增便條
 [2] 編輯便條
 [3] 檢視便條
 [4] 刪除便條

一張簡單的便條可能由標題、內容、時間所組成,也可以再複雜一點加上分類,發揮自己的創意。先就簡單版而言,我們的資料結構大概會長成這樣:

struct easyNote {
    char title[125];
    char content[125];
    char tile[64];
};

  當然我必須要說,字元陣列限定大小是一件很不妥當的事情,但在你克服指標之前這可能是你最方便的選擇。

  再舉個例子,以我以前交友系統來說,就有一些小互動:


 [1] 新增朋友
 [2] 編輯朋友 // (把刪除功能合併進去)
 [3] 互動
 [4] 檢視朋友

  朋友的結構大概有名字、性別、年齡…雜七雜八的東西,關鍵的數值應該是好感度

struct friend {
    char *name;
    int gender; // 0-male, 1-female
    int age;
    ...
    int mood;
}

  然後互動可以對好感值做一些增減,還有個function去判斷這個好感度是什麼樣的狀態(朋友、情人之類的)