翻轉鍊錶(非遞迴)

2021-09-02 09:45:15 字數 864 閱讀 2741

1. 問題描述:

給出乙個鍊錶,翻轉鍊錶,返回翻轉後鍊錶的頭結點

2. 我們也可以使用非遞迴的方式來進行翻轉鍊錶,首先遍歷鍊錶,使用乙個指標pre記錄當前節點的前乙個節點,使用當前節點的next指向前乙個節點pre,即下乙個元素的指標next指向前乙個元素pre那麼就實現了鍊錶的翻轉

這裡特別要注意的是pre.next不能賦值為空,當第乙個元素的時候倒是沒有關係,但是在迴圈後面的元素pre是有指向的,指向的是前乙個元素,假如你再修改的話那麼會導致前面形成的鍊錶會斷掉,最後只會剩下兩個元素,所以不能夠寫下面的pre.next = null;這句**,假如遍歷是從第二個元素開始的那麼應該在迴圈之前把第乙個pre的next置為空即可

while(p != null)
3. 具體的**如下:

public class main 	}	

public static void main(string args);

//int arr = ;

listnode head = new listnode(arr[0]);

listnode p = head;

for(int i = 1; i < arr.length; i++)

p = head;

while(p != null)

system.out.print("\n");

p = reverselinkedlist(head);

while(p != null)

} private static listnode reverselinkedlist(listnode node)

return pre;

}}

反轉鍊錶(非遞迴,哨兵,遞迴)

給你單鏈表的頭節點 head 和兩個整數 left 和 right 其中 left right 請你反轉從位置 left 到位置 right 的鍊錶節點,返回 反轉後的鍊錶 非遞迴解法 反轉cur.next cur.next pre pre cur cur next next cur.next 新建...

單鏈表遞迴和非遞迴兩種翻轉方法(手寫鍊錶)

一.對稱翻轉的思想 首先最直接的翻轉就是對稱翻轉,以1為對稱軸,把後面的數字依次插入最前邊形成翻轉 1 2 3 4 5 2 1 3 4 5 3 2 1 4 5 4 3 2 1 5 5 4 3 2 1 current 指標指向1 pnext 指標指向2 ptr 指標指向3 以1為對稱軸,即用curre...

反轉鍊錶 遞迴和非遞迴實現

include stdafx.h include include struct node void createlink node head,int data void printlink node head void reverselink node head node reverselink n...