zoukankan      html  css  js  c++  java
  • 【LeetCode】19. 删除链表的倒数第N个节点

    【题目描述】

    19. 删除链表的倒数第N个节点
    给定一个链表,删除链表的倒数第?n?个节点,并且返回链表的头结点。

    示例:
    给定一个链表: 1->2->3->4->5, 和 n = 2.
    当删除了倒数第二个节点后,链表变为 1->2->3->5.

    说明:
    给定的 n?保证是有效的。

    进阶:
    你能尝试使用一趟扫描实现吗?

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list

    【提交代码】

     1 /**
     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     struct ListNode *next;
     6  * };
     7  */
     8 
     9 struct ListNode* removeNthFromEnd(struct ListNode* head, int n){
    10     int i;
    11     struct ListNode *first;
    12     struct ListNode *second;
    13     struct ListNode *dummy;
    14 
    15     dummy = (struct ListNode *)malloc( sizeof(struct ListNode) );
    16     dummy->next = head;
    17 
    18     first = dummy;
    19     second = dummy;
    20 
    21     for( i = 0; i <= n; i++ )
    22     {
    23         first = first->next;
    24     }
    25     while ( first != NULL ) 
    26     {
    27         first = first->next;
    28         second = second->next;
    29     }
    30     second->next = second->next->next;
    31 
    32     return dummy->next;
    33 }

    【解题思路】

    注:建立一个指向头节点的哑节点,保持操作的一致性,避免对删除头节点时的特殊判断;

  • 相关阅读:
    Project项目视图
    Console(控制台视图)
    Layout布局列表
    Layers层列表
    帐户下拉
    TransformGizmo(变换)切换
    Play播放控件
    变换工具
    工具栏
    Help帮助
  • 原文地址:https://www.cnblogs.com/utank/p/13225015.html
Copyright © 2011-2022 走看看