1. struct ListNode{
  2. int val; \\链表数字域
  3. ListNode *next; \\链表指针域
  4. ListNode(int x) : val(x), next(NULL) {}
  5. }

206. 反转链表(easy)

  1. class Solution {
  2. public:
  3. ListNode* reverseList(ListNode* head) {
  4. ListNode *previous = NULL;
  5. ListNode *node = head;
  6. ListNode *next = head;
  7. while(node!=NULL)
  8. {
  9. next = next->next;
  10. node->next = previous;
  11. previous = node;
  12. node = next;
  13. }
  14. return previous;
  15. }
  16. };

更多算法题

使用temp和记录节点值去进行链表逆序。

  • 链表逆序(不可申请额外空间)—-206(easy)
  • 链表逆序b(不申请额外的空间),从m到n逆序。—-92(medium)
  • 求两个链表的交点,已知headA和headB。—-160(easy)
  • 链表求环(快慢指针)给定一个链表,判断其中是否有环—-141(easy)
  • 链表划分,将小于x的放在大于x的节点前,且保持相对位置—-86(medium)
  • 复制带随机指针的链表,节点中存在指向任意节点的随机指针—-138(hard)
  • 排序链表的合并,合并两个已排序的链表,合并后也有序。—->21(easy)
  • k个排序链表的合并,合并后任然有序。 —->23(hard)