单链表逆转(无头结点)
第一次看这个代码可能会有些吃力,我也是理解了好久才搞明白。下面是我的详细理解,希望对你有帮助。
1.在这里首先我们要记住q只起到了保留L下一个值的作用即q = L->Next;,它只是为了方便L后移一位,记住这个 看代码的时候就不会受到p,L的干扰。
2,L的作用是将L->Next指向p,而p就是我们这里的关键,第一步的时候p=NULL,而L->Next=p,第一个结点就这样作为了新链表的尾结点,这时候L就有点像做了坏事(L->Next=p)叫p来顶替的感觉,就有了p=L,而L则跑到了下一位,即 L = q。
3, 依次下去每次L做了坏事(L->Next = p)就叫p去顶替,p就每次都指向了前一个数p=L。所以这样操作就将链表逆置了。
List Reverse( List L ){
List q = NULL,p =