Advertisement

移除单链表的第k个前驱节点

阅读量:

单链表倒数第k个节点删除方法

题目:
移除单链表中从末尾起第k个节点

解题思路及算法代码:

采用标尺法时,需设置两个指针均指向链表的起始节点,首先使其中一个指针向前移动k个位置,随后两个指针同步前进。当率先移动的指针抵达链表末端时,另一指针所处的位置即为待删除节点所在的位置。


单链表结构定义:

复制代码
    typedef struct Node
    {
    int data;
    struct Node* next;
    }node, *pLinkedList;
    
      
      
      
      
      
    

移除列表末尾第K个节点的实现代码

复制代码
    //head表示头结点
    Node* removeLastKthNode(pLinkedList head, int k)
    {
    if (NULL == head->next || k < 1)
        return head;
    
    pLinkedList cur = head; //1号指针
    pLinkedList ret = head; //2号指针,指向待删除节点
    pLinkedList pre = NULL; //pdel待删除节点

全部评论 (0)

还没有任何评论哟~