顯示具有 C語言初學教材 標籤的文章。 顯示所有文章
顯示具有 C語言初學教材 標籤的文章。 顯示所有文章

C 語言初學教材 - 第六章 itmf.c

itmf.c 程式碼

C 語言初學教材 - 第六章 itm.h

itm.h 程式碼

C 語言初學教材 - 第六章 登出或離開

我們在函數 frienddata() 中,直接離開程式的方法為呼叫標準函數庫 stdlib.h exit() ,這個函數可使程式正常結束,需要一個整數當參數,我們這裡代入整數 1 。

C 語言初學教材 - 第六章 排序列表

我們打算也用氣泡排序法替鏈結串列排序,至於兩個節點調換的方式,簡單點的想法就是用一個暫存的結構,先把前一個節點的資料拷貝到暫存的結構,然後把後一個節點的資料拷貝到前一個節點,最後把暫存結構中的資料拷貝回後一個節點。

C 語言初學教材 - 第六章 刪除好友

刪除好友資料也就是在鏈結串列中刪掉某個節點,刪掉的概念很簡單,如下圖我們打算刪除打紅色叉叉的節點

C 語言初學教材 - 第六章 查詢好友

現在我們要在鏈結串列中實作出線性搜尋,以便運用在查詢好友上面。類似新增好友找到 nextPtr 成員為 NULL 的方法,鏈結串列中的線性搜尋就是逐一比對每個節點,若是找到與 data.name 相同的節點,就傳回指向該節點的指標,如果都沒有找到,就回傳 NULL 。

C 語言初學教材 - 第六章 執行檔

標頭檔用為放置常數定義及結構的定義、函數原型的宣告,實作檔則是各個函數的定義,現在,我們要來規劃一個執行檔,作為整合、測試這些程式碼之用。

C 語言初學教材 - 第六章 實作檔

實作檔是將函數定義放在另一個 .c 的檔案,注意,實作檔不需要定義函數 main() ,因此我們另外還需要規劃一個實際執行的執行檔。

C 語言初學教材 - 第六章 設計自己的標頭檔

我們已經陸陸續續發展許多不同功能的程式,包括有關登入程式、帳號管理、通訊錄資料等的相關處理,有些已經寫成可以直接應用的函數,現在是時候把這三個程式模組整合在一起了。整合的方式,說來也簡單,我們自己設計自己的標頭檔,把引入標準函數庫常數定義、結構定義、函數原型的宣告都放在標頭檔之中。

C 語言初學教材 - 第六章 雙重指標 編譯執行

編譯後執行,結果如下

C 語言初學教材 - 第六章 雙重指標 範例程式

雙重指標範例程式碼

C 語言初學教材 - 第六章 雙重指標

重新看一次這張圖

C 語言初學教材 - 第六章 增加好友 編譯執行2

編譯後執行,首先顯示 startPtr 的初值 0x0

C 語言初學教材 - 第六章 增加好友 範例程式2

範例程式碼

C 語言初學教材 - 第六章 增加好友 結果說明

咦?為什麼會完全沒有顯示新加入的好友呢?我們重新檢視 main() 與 addfriend() 之間的關係,首先, main() 宣告了 startPtr 作為鏈結串列的起點,假設 startPtr 的記憶體位址為 address_a ,我們賦予初值為 NULL

C 語言初學教材 - 第六章 增加好友 編譯執行1

編譯後執行,結果如下

C 語言初學教材 - 第六章 增加好友 範例程式1

範例程式碼

C 語言初學教材 - 第六章 增加好友

我們現在要用函數來處理鏈結串列,也就是把增加好友及印出好友列表分別規劃成不同的函數。想法很簡單,我們需要把記錄鏈結串列起點的 startPtr 留在函數 main() ,也就是把函數劃分為各種不同的功能,處理資料結構為專屬的函數,新增節點則是另外的函數。

C 語言初學教材 - 第六章 鏈結串列 編譯執行

編譯後執行,結果如下

C 語言初學教材 - 第六章 鏈結串列 範例程式

範例程式碼