單鏈表的逆轉是乙個基礎的資料結構題,做起來不難。和解決這個問題一起寫的還有做題的規矩,不能因乙個問題簡單就直接開始寫**,對於初學者來說,寫**前先寫乙個程式的大致框架是很有用的。
解題思路:
建立乙個單鏈表,遍歷這個鍊錶並且以頭插法將這個鍊錶賦值給另乙個鍊錶。
另外,我也得寫下我這個菜鳥遇到的問題和解決辦法,不管遇到的問題有多基礎,有問題就得解決並且記錄,這是乙個菜鳥的尊嚴。
問題:首先,我所理解的鍊錶就是,有頭指標,鍊錶的最後乙個元素的後繼是空(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...