C 單鏈表的簡單實現和應用!!!

2021-08-04 12:02:07 字數 2431 閱讀 4457

在單鏈表裡面,每個節點包含乙個指向下乙個節點 的指標。鍊錶的最後乙個節點的指標欄位是乙個值為null的指標,他的作用就是提示鍊錶後面不再有其他的節點。在你找到鍊錶的第乙個節點的時候呼叫節點裡面的指標就可以依次訪問剩下所有的節點。為了記住鍊錶的起始位置,可以用乙個根根指標。根指標指向鍊錶的第乙個節點,注意這裡根指標只是乙個指標,它不包含其他的任何資料。它的作用僅僅就是指向鍊錶的開始節點,呼叫根指標就可以訪問鍊錶的節點。

;在單鏈表裡面,當每次建立乙個節點的時候,可以將資料儲存在節點的資料域,但是同時還需要將建立的新節點的位址賦給上個節點的next指標和將新節點的next指標置為null。

單鏈表的建立:

#define _crt_secure_no_warnings 1

#include #include typedef struct node

node;

int main()

if (root == null)

else

}free(p1);

return 0;

}

注釋:在main函式裡面,先建立了root指標當建立的第乙個節點時候,將第乙個節點的位址賦給root,當建立的新節點不是第乙個節點的時候,經過if語句的判斷,將新節點的位址賦給上乙個節點的next指標,之後又將新節點p1賦給p2,當程式建立第二個節點的時候又可以將新建立的節點的位址重新賦給上乙個節點。這樣重複建立建立鍊錶的節點,同時也將我們要儲存的資料儲存到每個節點 的資料區。

鍊錶的插入

鍊錶的插入又可以分為兩類:鍊錶的前面插入和後面插入

鍊錶的後面插入:

void sll_list(node **head,int num)

new->data = num; //將要加入的資料賦值給資料區

new->next = null;

if (*head == null)

else

p->next = new; //將新節點作為為節點

}}

鍊錶的前面插入:

void  sll_list(node **head,int num)

new->data = num;

new->next = null;

if (*head == null)

else

}

在鍊錶裡面刪除資料:

void all_detele_list(node **head)

}

在鍊錶裡面指定修改的資料:

void change_list(node **head,int aim,int num)

p = p->next;

}}

在鍊錶裡面刪除所有的節點:

void sl_clear(node **p_list)  

*p_list = null;//將所指的鍊錶指標設為null

}

注意:這裡一定要free掉每個節點的空間,不然會出現記憶體洩露的問題

計算鍊錶裡面的節點個數:

int return_number(node ** head)

return i;

}

題目:輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點),返回結果為複製後複雜鍊錶的head。

方法1:鍊錶遍歷一遍,key和value的值對應關係如下然後再遍歷一次鍊錶,設定複製鍊錶的next和random指標

copy_list(randomlistnode phead)

cur=phead;

while(cur!=null)

return map.get(phead);

}

方法2:遍歷一次鍊錶,將鍊錶複製的副本節點放到自己後面,再從左到右遍歷一次鍊錶,設定random指標。分離鍊錶,返回。

randomlistnode *copyrandomlist(randomlistnode *head) 

p = head;

while (p != null)

p = t->next;

} p = head;

dest = p->next;

while (p != null)

} return dest;

}

C 語言單鏈表的實現(簡單實現)

簡單的實現單鏈表的增刪遍歷操作,還有一些功能需要實現。我感覺難理解的時候畫圖來搞清楚邏輯,先畫個圖比劃就行。author gong single linked list 增 刪 遍歷 include include 從新定義節點的資料域資料型別,以後好修改具體的鍊錶 typedef int data...

C實現單鏈表的簡單例子

想著回顧一下c的基礎知識,然後看到c的結構體陣列和鍊錶的部分,動手敲了一下,下面附上 include include include struct s node struct s node create number int n for i 2 i n 1 return head else retu...

單鏈表簡單實現

單鏈表的形式 頭部有個head節點每個節點都向後關聯乙個節點 下面是我的單鏈表的插刪改查和反轉的操作 include include include typedef struct node list define node size sizeof struct node typedef struct...