include”stdio.h”
include”string.h”
include”stdlib.h” //除去malloc 未定义的警告;
include “process.h”//为了清除掉system 未定义警告;
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode* reverseBetween(struct ListNode* head, int m, int n) {
struct ListNode *next, *new_head, *modi, *pre_head, *result;
int change_len = n - m + 1;
next = new_head = modi = pre_head = result = NULL;
result = head;
while (head && m - 1){
pre_head = head;
head = head->next;
m–;
}
modi = head;
while (head && change_len){
next = head->next;
head->next = new_head;
new_head = head;
head = next;
change_len--;
}
modi->next = head;
if (pre_head)
pre_head->next = new_head;
else{
result = new_head;
}
return result;
}
int main(){
struct ListNode *head;
struct ListNode *new_node1, *new_node2, *new_node3, *new_node4, *new_node5;
new_node1 = (struct ListNode *)malloc(sizeof(struct ListNode));
new_node1->val = 1;
head = new_node1;
new_node2 = (struct ListNode *)malloc(sizeof(struct ListNode));
new_node2->val = 2;
new_node1->next = new_node2;
new_node3 = (struct ListNode *)malloc(sizeof(struct ListNode));
new_node3->val = 3;
new_node2->next = new_node3;
new_node4 = (struct ListNode *) malloc(sizeof(struct ListNode));
new_node4->val = 4;
new_node3->next = new_node4;
new_node5 = (struct ListNode *)malloc(sizeof(struct ListNode));
new_node5->val = 5;
new_node4->next = new_node5;
new_node5->next = NULL;
while (head != NULL)
{
printf("%d", head->val);
head = head->next;
}
printf("\n");
struct ListNode *head_01 = reverseBetween(new_node1, 2, 4); //根据提示 一个* 因为new_node1本身就是一个指针,直接地址复制,而不是使用取地址符;
while (head_01 != NULL)
{
printf("%d", head_01->val);
head_01 = head_01->next;
}
system("pause");
}