C語言單鏈表的逆轉

2021-10-04 16:38:42 字數 1065 閱讀 9170

單鏈表的逆轉是乙個基礎的資料結構題,做起來不難。和解決這個問題一起寫的還有做題的規矩,不能因乙個問題簡單就直接開始寫**,對於初學者來說,寫**前先寫乙個程式的大致框架是很有用的。

解題思路:

建立乙個單鏈表,遍歷這個鍊錶並且以頭插法將這個鍊錶賦值給另乙個鍊錶。

另外,我也得寫下我這個菜鳥遇到的問題和解決辦法,不管遇到的問題有多基礎,有問題就得解決並且記錄,這是乙個菜鳥的尊嚴。

問題:首先,我所理解的鍊錶就是,有頭指標,鍊錶的最後乙個元素的後繼是空(null),這才能稱之為鍊錶。

我遇到的演算法上的問題就是,如何將乙個鍊錶上的值賦給另乙個鍊錶(傻瓜問題,但是有問題就得記錄),剛開始我是直接將鍊錶賦值的(傻瓜操作,得改),知道錯了就改變方法。

鍊錶上的每乙個元素都有資料域和指標域,每次賦值的時候得開闢乙個鍊錶元素型別(即結構體指標型別)的記憶體空間,然後將資料賦值給開闢好的記憶體空間的資料域,再將這個記憶體空間(即乙個在磁碟上擁有自己的空間的結構體指標)以頭插法連到新的鍊錶上,新的鍊錶剛開始當然是乙個空鍊錶,但是作為乙個鍊錶,必須要有乙個鍊錶該有的東西,即頭指標,而且其後繼要為null,這是原則問題。

**如下:

#include

#include

#include

//定義結構體

typedef

struct node

node;

typedef

struct node *linklist;

//頭插法建立鍊錶

void

createlisthead

(linklist *l,

int n)

}//單鏈表的逆轉

linklist reverse

(linklist l)

return s;

}void

main()

printf

("\n");

//逆轉單鏈表並且列印

s =reverse

(l);

linklist q=s->next;

while

(q)}

逆轉單鏈表

逆轉單鏈表 struct node reverse llist node head 此時temp表示以前的尾結點,p表示temp結點的前一結點 head temp 逆轉尾結點為頭結點 head next p 頭結點指標域指向p return head 逆轉迴圈鍊錶 struct node rever...

單鏈表逆轉

單鏈表逆轉 單鏈表逆轉,將單鏈表中各結點的next域改為指向其前驅結點。原先第乙個結點的next域為空,head改為指向原先的最後乙個結點。逆轉剛才如下圖所示 鍊錶類singlylist public class singlylist 構造單鏈表,由values陣列提供元素 public singl...

單鏈表逆轉

資料結構與演算法題目集 中文 list reverse list l 其中list結構定義如下 typedef struct node ptrtonode struct node typedef ptrtonode list 定義單鏈表型別 l是給定單鏈表,函式reverse要返回被逆轉後的鍊錶。i...