OJ题-反转链表
给你一个单链表的头节点,请反转链表,并返回新的链表
eg:
1,2,3,4,5--->5,4,3,2,1
//反转链表
struct ListNode* reverseList(struct ListNode* head)
{//定义三个变量struct ListNode* n1, * n2, * n3;n1 = NULL;n2 = head;n3 = head->next;//当n2不为空时,循环继续while (n2){//反转n2->next = n1;n1 = n2;n2 = n3;//要考虑最后n3为空指针,越界的问题if (n3){n3 = n3->next;}}//返回新的链表return n1;
}
struct ListNode* reverseList(struct ListNode* head)
{struct ListNode* newnode = NULL;//创建一个新的链表struct ListNode* cur = head;//便于迭代操作while (cur){//要先用next保存cur的下一个节点,否则将cur取下来头插后会被置成随机值,导致找不到cur的下一个节点struct ListNode* next = cur->next;//进行头插入cur->next = newnode;newnode = cur;//迭代往后走cur = next;}//返回新的链表return newnode;
}