單鏈表的逆轉

2022-04-03 14:04:58 字數 789 閱讀 4730

這次做的是單鏈表的逆轉,採用的方法比較笨,是一趟趟到頭,然後逆轉乙個,然後再重新趟一趟,再逆轉下乙個,最後出了乙個疏忽,就是逆轉到最後乙個節點(即開始被逆轉鍊錶的第乙個節點)的時候,最後乙個節點的next指向的其實還是倒數第二個節點(這是未逆轉時的情況,這裡沒有改變它),然後倒數第二個節點經過逆轉後指向的節點是倒數第乙個,所以這裡就形成了乙個閉環,當輸出的時候會死迴圈。

typedef int elementtype;

typedef struct node *ptrtonode;

struct node ;

typedef ptrtonode list;

list reverse( list l )

//迴圈結束以後,num為單鏈表長度

//初始化頭結點和浮動結點

l1 = l3;

l2 = l3;

//此時已經逆轉了乙個節點,故num--

num--;

//進行迴圈賦值

for(;num>0;num--)

//迴圈結束後移到了最後的還沒逆轉的一位

//逆轉鍊錶拓展一位

l2->next = l3;

l2 = l2->next;

} //此時最後乙個節點的尾指標並未指空,而是指向的倒數第二個節點

// 而倒數第二個節點指向的是最後乙個節點,當輸出的時候這裡會形成死迴圈

// 所以要把最後乙個節點的下乙個指標置空

l2->next = null;

//迴圈結束,逆轉完成

return l1;

}

逆轉單鏈表

逆轉單鏈表 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...