旋轉鍊錶,遞迴實現

2021-07-05 01:20:54 字數 612 閱讀 2210

思路:將原鍊錶看成兩部分,乙個部分表示完成旋轉的;乙個部分表示未完成旋轉的。分別通過兩個指標deshead和reshead指向兩個鍊錶,在一次函式遞迴中需要完成的是將未完旋轉鍊錶的頭指標 p 中的next指標指向已完成旋轉佇列的頭結點q.並將p新增到已完成佇列,從未完成佇列中移除p,該錶q當前的指向,使得q指向新加入的結點p。一下是**實現。 

#include

struct node

;void revertlist(node*reshead,node*&deshead)

node*temp=reshead->next;

if(deshead==null)

else

revertlist(temp,deshead);

}void printlist(node*head)

printf("\n");

}int main()

assisthead->next=null;

printlist(head);

assisthead=null;

revertlist(head,assisthead);

printlist(assisthead);

}

鍊錶 旋轉鍊錶

力扣原題 definition for singly linked list.public class listnode class solution 計算鍊錶長度 int length 0 listnode cur head while null cur 模擬k輪鍊錶旋轉 for int i 0 ...

(鍊錶)61 旋轉鍊錶

給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動 k 個位置,其中 k 是非負數。示例 1 輸入 1 2 3 4 5 null,k 2 輸出 4 5 1 2 3 null 解釋 向右旋轉 1 步 5 1 2 3 4 null 向右旋轉 2 步 4 5 1 2 3 null 示例 2 輸入 0 1 2 ...

遞迴實現鍊錶的反轉

我對遞迴的理解一直不是非常透徹,這裡想要用遞迴實現鍊錶的反轉,寫的時候發現自己連鍊錶的定義都忘記了 還是 寫得太少了 include stdio.h include include iostream using namespace std struct node node creat int a r...