這次做的是單鏈表的逆轉,採用的方法比較笨,是一趟趟到頭,然後逆轉乙個,然後再重新趟一趟,再逆轉下乙個,最後出了乙個疏忽,就是逆轉到最後乙個節點(即開始被逆轉鍊錶的第乙個節點)的時候,最後乙個節點的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...