struct结构体、链表

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 
 * @param m int整型 
 * @param n int整型 
 * @return ListNode类
 */
struct ListNode* reverseBetween(struct ListNode* head, int m, int n ) {

    // write code here
    struct ListNode*prev=NULL;
    struct ListNode*next=NULL;
    struct ListNode*phead=head;
    struct ListNode*reverseBegin=NULL;
    struct ListNode*reverseEnd=NULL;//define struct,define as NULL

    int i=1;
    if(NULL==head||NULL==head->next||m>=n)
    {
        return head;
    }

    while(NULL!=head)
    {
       if(i<m)
            {
                reverseBegin=head;
                head=head->next;//reverse in i==m
            }

        else if(i>n)
        {
            head=head->next;//remain unchanged
        }

        else {
            if(i==m)   
        {
            reverseEnd=head;

        }
        next=head->next;
        head->next=prev;
        prev=head;
        head=next;
        if(i==n)
        {
            if(1==m)
                {
                    phead=prev;
                    if(NULL!=head)
                    {
                        reverseEnd->next=head;
                    }

                }
                else{
                    reverseBegin->next=prev;
                    reverseEnd->next=head;
                }


        }





        }

    i++;

    }
return phead;
}

全部评论
点赞 回复 分享
发布于 2024-04-22 11:01 江苏

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务