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;
}

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

相关推荐

点赞 评论 收藏
转发
头像
不愿透露姓名的神秘牛友
03-31 22:44
拉普拉斯新能源 机械结构 12*14 硕士双一流
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务