【数据结构】做题笔记--区间反转链表

2024-03-01 12:25:30 浏览数 (2)

牛客的一道题,区间反转链表,请大佬指点

代码语言:javascript复制
/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 
 * @param m int整型 
 * @param n int整型 
 * @return ListNode类
 */
#include <stdio.h>
#include <stdlib.h>
struct ListNode* reverseBetween(struct ListNode* head, int m, int n ) {
    // write code here
    if(m==n)
    return head;
    struct ListNode *g,*p,*h;
    g=p=NULL;
    h=head;
    struct ListNode *w=(struct ListNode*)malloc(sizeof(struct ListNode));
    struct ListNode *now=(struct ListNode*)malloc(sizeof(struct ListNode));
    now=head;
    while (now->val!=m) {
    now=head->next;
    head=head->next;
    }
    w=head;
    while (n!=w->val) {
    w=head->next;
    head=head->next;
    }
    g=h;
    if(w->next!=NULL){
        g->next=w;
    }
    g=w->next;
    while(now!=w){
        p=now->next;
        now->next=g;
        g=now;
        now=p;

    }
    now->next=g;
    if(h->next!=NULL)
    return h;
    return now;
}

0 人点赞