单向带头链表的添加修改删除操作

这篇具有很好参考价值的文章主要介绍了单向带头链表的添加修改删除操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

单向带头链表的添加修改删除操作

public class HeroNodeDemo {
    public static void main(String[] args) {
        HeroNode hero1 = new HeroNode(1, "松江");
        HeroNode hero2 = new HeroNode(2, "武松");
        HeroNode hero3 = new HeroNode(3, "及时雨");
        HeroNode hero4 = new HeroNode(4, "吴用");
        HeroNode hero5 = new HeroNode(4, "常毅");
        SingledList singledList = new SingledList();
        singledList.add(hero1);
        singledList.add(hero2);
        singledList.add(hero3);
        singledList.add(hero4);
        singledList.delete(3);
        singledList.show();
    }


}
/**
 * 创建一个管理节点的类
 */
class SingledList {
    /**
     *  初始化一个头节点,头节点不能储有效数据,因为头节点可以帮助我们确定节点的初始位置
     *  因此头节点不能动
     */
    HeroNode head = new HeroNode(0, "");

    /**
     * 定义一个用于添加节点的方法
     * @param heroNode
     */
    public void add(HeroNode heroNode) {
        // 因为头节点不能动,所以设置一个指针节点
        HeroNode temp = head;
        // 使用循环,遍历到最后一个节点
        while (true) {
            if (temp.next == null) {
                break;
            }
            temp = temp.next;
        }
        temp.next = heroNode;
    }

    /**
     * 定义一个用于修改节点的方法,根据节点的编号进行修改,即节点编号不可更改。
     */
    public void update(HeroNode heroNode) {
        // 定义一个辅助节点
        HeroNode temp = head;
        // 进行链表是否为空判断
        if (head.next == null) {
            System.out.println("链表为空");
            return;
        }
        // 表示节点编号是否被找到
        boolean flag = false;
        // 使用循环去找节点编号
        while (true) {
            if (temp.no == heroNode.no) {
                flag = true;
                break;
            }
            if (temp.next == null) {
                break;
            }
            temp = temp.next;
        }
        // 如果找到节点,就去修改值
        if (flag) {
            temp.name = heroNode.name;
        } else {
            System.out.println("输入有误");
        }
    }

    /**
     * 遍历节点的方法
     */
    public void show() {
        // 通过头节点判断链表是否为空
        HeroNode temp = head;
        while (true) {
            if (temp.next == null) {
                break;
            }
            // 每次输出确保是可以进行输出的
            HeroNode heroInfo = temp.next;
            System.out.println(heroInfo);
            temp = temp.next;
        }
    }

    /**
     * 根据节点的编号删除对应的节点
     * @param no
     */
    public void delete(int no) {
        HeroNode temp = head;
        while (true) {
            if (temp.next == null) {
                System.out.println("要删除的节点不存在");
                break;
            }
            if (temp.next.no == no) {
                temp.next = temp.next.next;
                break;
            }
            temp = temp.next;

        }
    }
}

/**
 * 每个类实例就是一个节点
 */
class HeroNode {
    public int no;
    public String name;
    public HeroNode next;
    public HeroNode(int no, String name) {
        this.no = no;
        this.name = name;
    }

    @Override
    public String toString() {
        return "HeroNode{" +
                "no=" + no +
                ", name='" + name + '\'' +
                '}';
    }
}

 单向带头链表的添加修改删除操作

双向链表的添加操作文章来源地址https://www.toymoban.com/news/detail-430383.html

public void add(HeroNode heroNode) {
        // 因为尾节点不能动,所以设置一个指针节点
        HeroNode temp = last;
        // 新添加节点的前一个节点为temp所在的节点
        HeroNode heroNode1 = new HeroNode(heroNode.no, heroNode.name, temp, null);
        // 进行判断若链表中只有一个元素,则将first指针指向该元素
        if (last == null) {
            first = heroNode1;
        } else {
            // 如果存在元素,就将元素追加到链表后面
            temp.next = heroNode1;
        }
        // 进行指针后移
        last = heroNode1;
    }

到了这里,关于单向带头链表的添加修改删除操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包