leetcode.92. Reverse Linked List II

Posted yuhaowang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode.92. Reverse Linked List II相关的知识,希望对你有一定的参考价值。



/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };1
. 。*/
struct ListNode* reverseBetween(struct ListNode* head, int m, int n) {
if(head==NULL||head->next==NULL)
return head;
int i,j;
struct ListNode *p,*a,*q,*bot;
p=(struct ListNode*)malloc(sizeof(struct ListNode));
p->next=head;
bot=p;
for(i=1;i<m;i++)
{
p=p->next;//把q指针放在m前一个数
}
a=p->next;
for(i=m;i<n;i++)
{
q=a->next;
a->next=q->next;//a自动移动
q->next=p->next;//这里不能写成q—>next=a 只是第一次行,插入的节点放在上一次插入节点之前
p->next=q;
}
return bot->next;
}


本身就是一个链表置逆的,但是有很多种可能报错。
1.Line x: member access within null pointer of type… 加判断指针是否为空就行

2.可能会出现好多种比较特殊的数据格式我自己之前并没有建立空节点来让指针放前,后来这种形式的就没法运行了

Input:[3,5] 1 2
Output:[3,5]
Expected:[5,3]
所以必须建立空节点,这种指针就无法交换了。
3.返回不能返回head
Input:[3,5] 1 2
Output:[3]
Expected:[5,3]
在从第一个数就开始对换的情况下,head指向的第一个节点被移动到后面去了,所以少了一个数。

 































以上是关于leetcode.92. Reverse Linked List II的主要内容,如果未能解决你的问题,请参考以下文章

[LeetCode92]Reverse Linked List II

#Leetcode# 92. Reverse Linked List II

Leetcode 92. Reverse Linked List II

leetcode.92. Reverse Linked List II

[LeetCode]92. Reverse Linked List II

LeetCode 92. Reverse Linked List II