c 完美运行List LeetCode 9 2

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");

}

这里写图片描述

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_42664961/article/details/82290144