原创 字符串(1)——相關使用

字符串的輸出 printf("%s",字符串首地址); 優點:自帶遇到’\0’就停止的功能 puts(字符串首地址); 優點:不需要佔位符,只需要字符串的首地址,且自動換行 putchar( ) 顯示一個字符 字符串的輸入 sca

原创 算法(2)

查找 順序查找 從頭到尾逐一比較,對於數據沒有要求,但方法簡單,在小規模的數據查找中比較常用,但效率低 二分查找 前提就是數據必須有序,然後從數據的中間位置開始查起(比中間數小往左查,比中間大往右查),如果中間值比key小,則從中

原创 聯合——大小端

聯合(union) 注意:命名開頭大寫! 它與結構的使用語法基本一樣,區別是結構的每個成員都有獨立的存儲空間,而聯合是所有成員共用一塊存儲空間(每個成員都從0地址開始),因此同一時刻只能有一個成員使用,只要有一個成員的值發生變化,

原创 如何讓vim編輯器用起來更順手

如何讓vim編輯器用起來更順手 在用戶目錄下編寫一個 .vimrc 文件 內容如下: "顯示行號 set number "不顯示行號,正常模式輸入:進入行底模式,set nonumber "設置tab鍵的寬度,默認是8,一般配置爲

原创 鏈式棧

添加頭文件 聲明宏定義 設計數據結構 功能函數聲明 具體功能實現 簡單調用測試 int main() { Stack* stack = creat_stack(); for(int i=0; i<10; i

原创 樹(2)

樹 元素之間存儲一對多關係的數據結構,常用於表現族譜關係、組織關係等,也可以藉助特殊的樹型結構實現查找、排序等算法,一般使用倒懸樹的方式表示。 樹的相關術語 根結點:樹的最上層元素,有且只能有一個。 子結點:該結點的對應下一層元素

原创 順序表

添加頭文件 聲明宏定義 設計數據結構 功能函數聲明 具體功能實現 簡單調用測試 int main() { // 創建 Array* arr = create_array(20); // 存數 for

原创 順序二叉樹

添加頭文件 聲明宏定義 設計數據結構 功能函數聲明 具體功能實現 簡單調用測試 int main() { TYPE arr[] = {1,2,3,4,5,6,7,8};

原创 順序隊列

添加頭文件 聲明宏定義 設計數據結構 功能函數聲明 具體功能實現 注:因爲隊頭和隊尾都指向第一/最後一個有效元素,因此queue->tall指向-1更合適,而不是指向前/下一個空元素,方便查詢 簡單調用測試

原创 通用鏈表與回調

通用鏈表(list) void* 萬能指針,可以與任意類型的指針互換 int* = void* void* = int* 需要把鏈表的數據域換成void*類型。 回調 由於通用鏈表存儲的類型不確定,因此類型

原创 鏈式隊列

添加頭文件 聲明宏定義 設計數據結構 功能函數聲明 具體功能實現 簡單調用測試 int main() { Queue* queue = creat_queue(); for(int i=0; i<10;

原创 順序棧

添加頭文件 聲明宏定義 設計數據結構 功能函數聲明 具體功能實現 簡單調用測試 int main() { Stack* stack = creat_stack(15); // 創建容量爲15的棧 pri

原创 鏈式二叉樹

添加頭文件 聲明宏定義 設計數據結構 功能函數聲明 具體功能實現 簡單調用測試 int main() { Node* tree = NULL; for(int i=0; i<10; i++) {

原创 鏈式表

添加頭文件 聲明宏定義 設計數據結構 功能函數聲明 具體功能實現 簡單調用測試 int main() { List* list = creat_list(); for(int i=0; i<

原创 使用回調,封裝一個bsort排序函數,支持任意類型

bsort.h bsort.c main.c 運行結果