1. 程式人生 > >C語言小知識 --- 資料結構 --- 單向連結串列 ...... 嗯 ......未完待續

C語言小知識 --- 資料結構 --- 單向連結串列 ...... 嗯 ......未完待續

一、

    連結串列很簡單,普通的連結串列說白了就是我們之前學過了的結構體作為多個節點連結而成一條資料連出來的,奇怪了,結構體它們怎麼可以一個連著一個呢?

以單向連結串列為例子:

    其實很簡單,之所以說它們連在一起,因為每個結構體(連結串列節點)裡面存放著一種指標,這種指標存放著當前結構體連的下一個結構體的地址,注意了這種指標為什麼可以存放下一個結構體的地址呢?因為這種指標的型別就是和結構體(連結串列節點)的型別是一樣的嘛。

剛才說了,連結串列是多個結構體連成一條的資料鏈,資料鏈?也就是說有資料的連結串列,那這個資料也是和指標一樣,都存放在結構體裡面。那麼連結串列就是長這個樣子的。

程式碼例子:

#include <stdio.h>
#include <stdlib.h>

typedef struct my_node //定義結構體型別,也就是用於上面所說的連結串列結點
{
	struct my_node * Next;
	int data;

}M_N,*P_M_N;


P_M_N Node_create()
{
	P_M_N Node = (P_M_N) malloc(sizeof(M_N));
	Node->Next = NULL;

	return Node;
}



P_M_N Node_init()//初始化頭結點函式
{
	P_M_N Head = Node_create();

	return Head;
}


P_M_N Node_add(P_M_N Head,int Add_data)//增加節點函式 -- 普通的後插法
{
	P_M_N New_node = Head;//新建結點,保證Head的穩定性
	P_M_N Add_node = Node_create();//新建新結點,存放插入結點的資料

	while(New_node != NULL)//遍歷帶連結串列的最後
		New_node = New_node->Next;

	New_node->Next = Add_node; //後插結點
	Add_node->data = Add_data;

	return Head;
}


int main()
{
	P_M_N Head = Node_init();
	Node_add(Head,520);

	return 0;
}