作者:DomeSmart | 来源:互联网 | 2023-10-11 17:43
链表是一种数据结构:由数据和指针构成,链表的指针指向下一个节点
java ListNode链表是用java自定义实现的链表结构。
基本结构:
class ListNode { //类名: Java类是定制的数据结构int val; //数据:节点数据ListNode next; //对象:引用以下节点对象: Java没有指针概念,Java引用与c语言指针相似}添加构造方法可以简化初始化。
class ListNode { //类名: Java类是定制的数据结构int val; //数据:节点数据ListNode next; //对象:引用以下节点对象: Java没有指针的概念。 Java引用和c语言指针类似于ListNode () listnode(intval ) /构造方法。 构造方法和类名相同的this.val=val; //将收到的参数转换为当前类的val变量}listnode(intval,ListNode next ) { this.val=val; //将收到的参数代入当前类的val变量this.next=next将收到的参数分配给当前类的next变量}
类型表示法:使用类型时与不同的数据类型:兼容
class ListNodeE{ //类名: Java类是自定义数据结构的E val。 //数据:节点数据ListNodeE next; listnode(eval )//生成方法:生成方法和类名相同的this.val=val; //将收到的参数代入当前类的val变量中}用例:
公共类列表节点{ int val; ListNode next; listnode(listnode ) intval ) { this.val=val; }listnode(intval,ListNode next ) { this.val=val; this.next=next; }//打印输出方法staticvoidprint (listnodelistnoed ) while ) listnoed!=null(system.out.println (节点: ) listnoed.val ); listNoed=listNoed.next; } } @Test public void test1 () listnodenodesta=newlistnode(0); //创建第一个节点ListNode nextNode; //在移动过程中声明指向当前节点的变量的nextNode=nodeSta; //创建指向起始节点的//链表for (inti=1; i 10; I )列表节点=新列表节点(I; //生成新节点nextNode.next=node连接新节点的nextNode=nextNode.next; //将当前节点向后移动,即,next后对象下的next为null}//for循环完成后,nextNode指向最后一个节点nextNode=nodeSta; //重新赋值以指向第一个节点的打印(下一个节点); //打印输出//替换节点while (下一个节点!=null(if ) nextnode.val==4) listnode new node=new listnode (99 ); //生成新节点new node.next=next node.next.next; //保存要替换的节点的下一个节点,然后在新节点的下一个节点nextNode.next=newnode; //新节点的下一个节点指向以前保存的节点} nextNode=nextNode.next; //循环完成后,下一个节点指向最后一个节点nextNode=nodeSta; //重新赋值以指向第一个节点的打印(下一个节点); //打印输出//插入节点while (下一个节点!=null(if ) nextnode.val==5) listnode new node=new listnode (99 ); //生成新节点ListNode node=nextNode.next首先保存下一个节点newnode.next=node新节点的下一个节点是以前保存的节点next node.next=//插入新节点} nextNode=nextNode.next; //循环完成后,下一个节点指向最后一个节点nextNode=nodeSta; //重新赋值以指向第一个节点的打印(下一个节点); //打印输出}创建链表时的调试:如下所示