static SingleNode delBackNode(SingleNode targetNode,int n){ SingleNode designNode = targetNode; SingleNode operationNode = targetNode; //两种情况 第一种链表长度等于n,直接删除头节点,第二种链表长度小于n //现将designNode索引后移n位,如果后移后的designNode头节点为null,则说明n等于链表长度删除头节点 for(int i = 0;i < n;i++){ designNode = designNode.next; } if(designNode == null){ targetNode = targetNode.next; return targetNode; } //designNode、operationNode同时后移由于designNode已经后移过n位了,所以当designNode移到最后一位时operationNode的下一位即是要删除的节点, while(designNode.next != null){ designNode = designNode.next; operationNode = operationNode.next; } operationNode.next = operationNode.next.next; return targetNode; }
删除链表倒数第n个节点(O(n)时间复杂度)
最新推荐文章于 2023-01-06 23:35:49 发布