当前位置: 首页 > 后端技术 > Java

数据结构基础--链表练习

时间:2023-04-02 09:10:16 Java

一、单链表和双链表反转publicclassReverseNode{publicstaticclassNode{publicintvalue;下一个公共节点;publicNode(intvalue){this.value=value;}}publicstaticclassDoubleNode{publicintvalue;publicDoubleNode最后;接下来是公共双节点;publicDoubleNode(intvalue){this.value=value;}}/***单链表反转*a->b->c->null*c->b->a->null**@return返回头节点*/publicstaticNodereverseNode(Nodehead){节点pre=null;下一个节点=空;while(head!=null){next=head.next;head.next=pre;前=头;头=下一个;}返回前;}publicstaticDoubleNodereverseDoubleNode(DoubleNodehead){DoubleNodepre=null;双节点next=null;while(head!=null){next=head.next;head.next=pre;head.last=下一个;前=头;头=下一个;}返回前;下一个节点,获取前一个节点,将当前节点后移(2)双链表:获取下一个节点,修改当前节点的下一个和最后一个节点,获取前一个节点,将当前节点后移2.删除单链表中指定值publicclassDeleteNodeValue{publicstaticclassNode{publicintvalue;下一个公共节点;公共节点(整数值){这个。价值=价值;}}publicstaticNoderemoveValue(Nodehead,intnum){while(head!=null){if(head.value!=num){break;}head=head.next;}节点pre=head;节点cur=head;while(cur!=null){if(cur.value==num){pre.next=cur.next;}else{pre=cur;}cur=cur.next;返回头;}}核心点:1)找到不需要删除值的节点作为头节点(最后返回这个头节点)2)标记记住pre和cur节点3)从cur开始,一个一个遍历剩下的节点。如果cur节点的值等于要删除的值,则修改pre节点的下一个节点;如果cur节点的值不是要删除的值,则将pre节点修改为cur节点。