环方法 - C语言
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
#define SIZE 3
#define START 1
struct ListNode* reverseList(struct ListNode* head){
struct ListNode *dp[SIZE] = {0};
int i = START;//注意点1:用1作为起始可以避免0-1产生-1的越界行为,并且作为环使用,所以起始位置并不重要;
dp[START] = head;
while (1) {
if (dp[i%SIZE] == NULL)
return dp[(i-1)%SIZE];
dp[(i+1)%SIZE] = dp[i%SIZE]->next;
dp[i%SIZE]->next = dp[(i-1)%SIZE];
i++;
}
}