首页 > 作文

Java实现单链表基础操作

更新时间:2023-04-04 23:16:14 阅读: 评论:0

关于链表

链表是有序的列表链表是以节点的方式来存储每个节点包含data域,next域(指向下一个节点)分带头节点的链表和没有头节点的链表

定义一个节点:

package linkedqueue;public class heronode {    public int no;    public string name;    public string nickname;    public heronode next;//指向下一个节点    public heronode(int no, string name, string nickname) {        this.no = no;        this.name = name;        this.nickname = nickname;    }    @override    public string tostring() {        return "heronode{" +                "no=" + no +                ", name='" + name + '\'' +                ", nickname='" + nickname + '\'' +                '}';    }}

定义一个链表:

实现以下功能:

添加节点

按序添加节点

删除节点

修改节点

遍历节点

反向打印节点

链表反转

统计节点个数

打印倒数第n个节点

程序:

package linkedqueue;import java.util.stack;public class singlelinkedlist {    private heronode head = new heronode(0, "", "");    public heronode gethead() {        return head;    }    //反向打印节点    public static void reverprint(heronode head) {        if (head.next == null) {            return;        }    //    创建一个栈        stack<heronode> heronodes = new stack<>();        heronode cur = head.next;        while (cur != null) {            heronodes.push(cur); //入栈            cur = cur.next;        }    //    出栈打印        while (heronodes.size() > 0) {            system.out.println(heronodes.pop());        }    }    /**     * 添加节点     * @param heronode     */    public void add(heronode heronode) {        heronode temp = head;        while (true) {            if (temp.next == null) {                break;            }            t党课小结emp = temp.next;        }        temp.next = heronode;    }    /**     * 有序添加节点     * @param hernode     */    public void addbyorder(heronode hernode) {        heronode temp = head;        boolean flag = fal;        while (true) {            if (temp.next == null) {                break;            }            if (temp.next.no > hern键盘手ode.no) {                break;            } el if (temp.next.no==hernode.no) {                flag = true;                break;            }            temp = temp.next;        }        if (flag) {            system.out.println("你要插入的节点的编号已经存在!!!!");        } el {            hernode.next = temp.next;            temp.next = hernode;        }    }    /**     * 更新节点数据     * @param newheronode     */    public void update(heronode newheronode) {        if (head.next == null) {            system.out.println("链表为空!!!!");            return;        }        heronode temp = head.next;        boolean flag = fal;        while (true) {            if (temp == null) {                break;            }        伊索寓言寓意    if (temp.no == newheronode.no) {            //    找到                flag = true;                break;            }            temp = temp.next;        }        if (flag) {            temp.name = newheronode.name;            temp.nickname = newheronode.nickname;        } el {        //    没有找到            system.out.println("没有找到编号" + newheronode.no + "的节点,不能修改");        }    }    /**     * 刪除节点     * @param no     */    public void del(int no) {        heronode temp = head;        boolean flag = fal;        while (true) {            if (temp.next == null) {                break;            }            if (temp.next.no == no) {                flag = true;                break;            }            temp=temp.next;        }        if (flag) {            temp.next = temp.next.next;        }    }    /**     * 遍历节点     */    public void showlist() {        if (head.next == null) {            system.out.println("链表为空");            return;        }        heronode temp = head.next;        while (true) {            if (temp == null) {                break;            }            system.out.println(temp);            temp = temp.next;        }    }    /**     * 统计有效节点的个数     */    public static int getlength(heronode head) {        if (head.next == null) { //空链表            return 0;        }        int length = 0;        heronode hernode = head.next;        while (hernode != null) {            length++; // 计数            hernode=hernode.next; // 指针后移        }        return length;    }    /**     * 求倒数第index个节点     * @param head 头节点     * @param index 倒数第k个     * @return     */    public static heronode findlastindexnode(heronode head, int index) {        // 判断是否是空链表        if (head.next == null) {            return null;        }        // 拿到链表的长度        int size = getlength(head);        // index校验,看是否在范围内        if (index <= 0 || index > size) {            return null;        }        // 定位倒数第index个节点        heronode hernode = he江苏科技大学排名ad.next;        for (int i = 0; i < size - index; i++) {            hernode = hernode.next;        }        return hernode;    }    //单链表反转    public static void reverlist(heronode head) {    //    如果当前链表为空或者只有一个节点,直接返回        if (head.next == null || head.next.next == null) {            return;        }    //    定义辅助变量来遍历链表        heronode cur = head.next;        heronode next = null;//指向当前节点[cur]的下一个节点        heronode revers刘亦菲 图ehead = new heronode(0, "", "");    //    遍历原来节点,每遍历一个节点,将其取出,并放在新的链表的最前端        while (cur != null) {            next = cur.next;//暂时保存当前节点的下一个节点            cur.next = reverhead.next;//将cur的下一个节点指向新的链表的最前端            reverhead.next=cur;//将cur链接到新的链表            cur = next;        }        head.next = reverhead.next;    }}

到此这篇关于java实现单链表基础操作的文章就介绍到这了,更多相关java单链表内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 23:16:13,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/cc4dc735ff409ee89cf6daebf796ef70.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Java实现单链表基础操作.doc

本文 PDF 下载地址:Java实现单链表基础操作.pdf

上一篇:耐腐蚀隔膜泵
下一篇:返回列表
标签:节点   链表   遍历   倒数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图