双向链表的组成:data域、next域(指向下一个节点)、pre域(指向前一个节点)
具体代码如下:
//定义DoubleLinkedList
class DoubleLinkedList {//定义头结点 位置保持不变private HeroNode2 head = new HeroNode2(0, "", "");//提供头节点的getter构造器public HeroNode2 getHead() {return head;}//增删改查的方法}class HeroNode2 {public int no;public String name;public String nickname;//指向下一个节点public HeroNode2 next;//指向前一个节点public HeroNode2 pre;//初始化数据public HeroNode2(int no, String name, String nickname) { = no;this.name = name;this.nickname = nickname;}//展示英雄 重写toString方法@Overridepublic String toString() {return "HeroNode{" +"no=" + no +", name='" + name + ''' +", nickname='" + nickname + ''' +'}';}
}
思路分析:
具体代码:
//显示链表[遍历]public void list() {//判断链表是否为空if ( == null) {System.out.println("链表为空");return;}//因为头节点不能动,需要一个辅助变量来遍历HeroNode2 temp = ;while (true) {//判断是否到链表最后if (temp == null) {break;}//输出节点信息System.out.println(temp);//循环完第一个节点后应该 指向下一个节点temp = ;}}
思路分析:
具体代码:
//添加节点public void add(HeroNode2 heroNode) {//定义辅助变量指向头节点HeroNode2 temp = head;//找到当前链表的最后节点 需要遍历while (true) {//判断是否存在下一个节点if ( == null) {break;}//如果没有找到temp后移temp = ;}//将最后这个节点的next 指向新节点//形成双向链表 = heroNode;heroNode.pre = temp;}
思路分析:
具体代码:
public void update(HeroNode2 newHeroNode) {//判断是否为空if ( == null) {System.out.println("链表为空");return;}//辅助变量HeroNode2 temp = ;boolean flag = false;//标记是找到修改的节点//循环判断是否存在要修改的节点信息while (true) {if (temp == null) {break;}if ( == ) {flag = true;break;}//如果上述条件都不满足,则继续循环遍历查找要修改的节点temp = ;}//判断标记是否为trueif (flag) {temp.name = newHeroNode.name;temp.nickname = newHeroNode.nickname;} else {System.out.printf("要修改的节点%d号,不存在n", );}}
思路分析:
具体代码:
public void delete(int no) {//判断当前链表是否为空if ( == null) {//空链表System.out.println("链表为空,无法删除");return;}//辅助变量HeroNode2 temp = ;boolean flag = false;//循环遍历找出需要删除的节点位置while (true) {if (temp == null) {break;}if ( == no) {flag = true;break;}//后移继续查找要删除节点的位置temp = ;}if (flag) { = ;if ( != null) {pre = temp.pre;}} else {System.out.printf("要删除的节点%d号,不存在n", no);}}
04测试双链表的增删改查
HeroNode2 hero1 = new HeroNode2(1, "宋江", "及时雨");HeroNode2 hero2 = new HeroNode2(2, "卢俊义", "玉麒麟");HeroNode2 hero3 = new HeroNode2(3, "吴用", "智多星");HeroNode2 hero4 = new HeroNode2(4, "林冲", "豹子头");DoubleLinkedList doubleLinkedList = new DoubleLinkedList();System.out.println("添加后的的情况");doubleLinkedList.add(hero1);doubleLinkedList.add(hero2);doubleLinkedList.add(hero3);doubleLinkedList.add(hero4);doubleLinkedList.list();//修改链表HeroNode2 newHero = new HeroNode2(4, "公孙胜", "入云龙");doubleLinkedList.update(newHero);System.out.println("修改过后的情况");doubleLinkedList.list();//删除链表英雄doubleLinkedList.delete(3);System.out.println("删除过后的情况");doubleLinkedList.list();
结果:
添加后的的情况
HeroNode{no=1, name=‘宋江’, nickname=‘及时雨’}
HeroNode{no=2, name=‘卢俊义’, nickname=‘玉麒麟’}
HeroNode{no=3, name=‘吴用’, nickname=‘智多星’}
HeroNode{no=4, name=‘林冲’, nickname=‘豹子头’}
修改过后的情况
HeroNode{no=1, name=‘宋江’, nickname=‘及时雨’}
HeroNode{no=2, name=‘卢俊义’, nickname=‘玉麒麟’}
HeroNode{no=3, name=‘吴用’, nickname=‘智多星’}
HeroNode{no=4, name=‘公孙胜’, nickname=‘入云龙’}
删除过后的情况
HeroNode{no=1, name=‘宋江’, nickname=‘及时雨’}
HeroNode{no=2, name=‘卢俊义’, nickname=‘玉麒麟’}
HeroNode{no=4, name=‘公孙胜’, nickname=‘入云龙’}
本文发布于:2024-01-30 18:20:43,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170661004921928.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |