主攻c語言教程已經接近尾聲,越發激起了學習資料結構的興趣。學習資料結構不能沒有語言功底,要不然各種錯誤不知如何除錯,使用語言也不是十分自然。這兩樣應該是相得益彰的,學好一種語言,靈活運用,像說話一樣,然後掌握技巧。
在資料結構中 鍊錶是非常重要的。下面是對聯表的實現以及基本的操作函式。還有一些細節歸納。
typedef char data;
struct linked_list
;typedef struct linked_list element;
typedef element *link;
//遞迴方式生成鍊錶
link string_to_list(char s)
}//迭代方式生成鍊錶
link s_to_l(char s)
tail -> next = null;
} return head;
}//對聯表進行計數//遞迴方法
int count(link head)
}//對鍊錶進行計數 迭代方法
int count_list(link head)
//遞迴方法輸出鍊錶所有元素。
void print_list(link head)
}///用遞迴方法連線兩個鍊錶
void concatenate(link a, link b)
//遞迴允許我們在便利量表a時候,避免使用任何輔助指標。一般而言,自引用的字元鍊錶,使遞迴方法顯得十分自然。這些遞迴形式基本如下
/*void generic_recursion(link head)
*/void insert(link p1,link p2,link q)
int main(void)
有了鍊錶就可以實現堆疊實現佇列,(當然用陣列也可以,各有各的好處); C語言鍊錶實現棧
鍊錶實現帶頭結點的棧,入棧用頭插法 環境codeblocks include include include typedef int elemtype typedef struct node node,linkstack 初始化棧 linkstack initstack linkstack s 入棧...
C語言單向鍊錶實現
include include typedef struct node listnode typedef listnode linklist 帶頭節點的單鏈表 初始化單鏈表只有頭節點 void initlinklist linklist linklist 建立乙個單鏈表 linklist creat...
C語言的鍊錶實現
鍊錶 linked list 是一種常見的基礎資料結構,是一種線性表,但是並不會按線性的順序儲存資料 想想陣列,元素是按照順序儲存的,即儲存區域連續 由於不必須按順序儲存,鍊錶在插入的時候可以達到o 1 的複雜度,但是查詢乙個節點或者訪問特定編號的節點則需要o n 的時間。鍊錶結構分類 單向鍊錶 雙...