首页 > 编程知识 正文

java链表原理(java链表的长度)

时间:2023-05-05 20:40:18 阅读:96964 作者:3203

指剑要约06。从尾到头打印链表的头节点,从尾到头返回每个节点的值(按数组返回)。

类别解决方案6 {

public int[]reverse print(ListNode head){ 0

//可以遍历一次,根据数组的下标将元素放入数组中。

int索引=0;

ListNode node=head//暂时计算链表的长度。

while(节点!=null){ 0

指数;

node=node.next

}

//需要打开一个数组。

int[]RES=new int[index];

for(int I=index-1;I=0;I-){ 0

RES[I]=head . val;

head=head.next

}

返回res

}

}

指剑献十八。删除链表的节点。

类别解决方案{

public listnode delete node(listnode head,int val){ 0

if(head==null)返回null

if(head . val==val)return head . next;//本来是returnhead,但是这种情况是有特点的。删除表头节点,可以删除这一行,因为后面用的是伪表头节点。

//删除该节点上一个节点的位置,先找到它,然后改变指针。

listnode dummy=newListNode(0);//虚拟头节点

dummy.next=head//让他指向头节点。

ListNodenode=dummy//临时节点,要删除的上一个节点。

while(节点!=nullnode.next!=null){ 0

if(node . next . val==val){ 0

node . next=node . next . next;//单链表删除就这么简单。

打破;

}

node=node.next//否则,继续向后移动。

}

returndummy.next

}

指剑Offer 22中倒数第二个k节点。链接列表。

输入一个链表,输出链表中最后一个k节点。为了符合大多数人的习惯,这个问题从1开始计数,也就是链表的尾节点是倒数第二个节点。

例如,一个链表有六个节点。从第一个节点开始,它们的值依次为1、2、3、4、5和6。该链表的倒数第二个节点是一个值为4的节点。

/**

*明确链接列表。

*publicclassListNode{

* intval

* ListNodenext

* ListNode(intx){ val=x;}

*}

*/

类别解决方案{

public listnode getkthfromend(listnode head,intk){ 0

//如果找到正数的第二个节点,你会怎么做?只需使用索引并往回走两次就可以到达那里。

//这里使用了双指针,两个指针之间的距离为k,同时向后移动;

ListNodefast=head,slow=head

趁着(快!=null k0){ 0

fast=fast.next

k-;

}

//这里使用了双指针,两个指针之间的距离为k,同时向后移动;

//慢指最后一个k

趁着(快!=null){ 0

fast=fast.next

慢=慢。下一步;

}

returnslow

}

}

来吧,大家

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。