单链表对象操作--java

来源:互联网 发布:网络摄像机监控软件 编辑:程序博客网 时间:2024/06/09 20:22

之前写了关于单链表操作是以 int 型为例,但是在时间应用中,链表很少仅仅存储数字,更多的是对象。那么这一篇以存储对象为例,简单介绍如何对单链表进行简单的操作。

注意事项:删除与增添操作应注意链表的长度,不可溢出,用不专业的话讲,溢出分为“上溢”和“下溢”,上溢指的是所删除/插入的数据位置超过链表长度;下溢出指的是删除/插入的数据位置为负。

比如,链表长度为2,现在执行操作要求删除位置为4的数据,显然这是会报错的。

比如,链表为空,现在要求删除数据,也是会报错的。

比如,要求删除位置为-1的数据,位置-1是不存在的。

具体代码详见如下,若是刚刚接触链表,建议先看前一篇,以 int 型为例的。在阅读过程中发现代码有什么不周到的地方,欢迎指出讨论。

package ListLink;public class LinkListA {public Node first;public int tmp=0;     //节点位置public int len=0;     //链表长度public LinkListA(){this.first=null;}public void addFirstNode(Teacher teacher){Node node=new Node(teacher);node.next=first;first=node;len++;}public Node deleteFirstNode(){Node node=null;if(first==null){System.out.println("删除失败,该链表为空");}else{node=first;first=node.next;len--;}return node;}public void addNode(int index,Teacher teacher){Node node=new Node(teacher);Node previous=first;Node current=first;if(index>len||index<0){System.out.println("插入失败,超过链表长度");return;}while(tmp!=index){previous=current;current=current.next;tmp++;}if(index==0){node.next=first;first=node;len++;}else{node.next=current;previous.next=node;len++;}tmp=0;}public Node deleteNodeByIndex(int index){Node node=null;if(index>=len||index<0){System.out.println("删除失败,超出链表长度");return node;}Node previous=first;Node current=first;        while(tmp!=index)        {        previous=current;        current=current.next;        tmp++;        }        if(index==0)        {        node=first;        first=node.next;        len--;        }        else        {        node=current;        previous.next=current.next;        len--;        }return node;}public void PrintAll(){Node node=first;while(node!=null){node.display();node=node.next;}}public static void main(String[] args){LinkListA lla=new LinkListA();Teacher teacher=new Teacher("0001","张三","男",45,"12111111","1111@11.com");lla.PrintAll();lla.addFirstNode(teacher);Teacher teacher1=new Teacher("0001","李四","男",42,"12111111","1111@11.com");lla.addNode(-2, teacher1);lla.PrintAll();}}

package ListLink;public class Node {protected Node next;protected Teacher teacher;public Node(Teacher teacher){this.teacher=teacher;}public void display(){System.out.println(" 教工编号: "+teacher.getSno()+" 教工姓名: "+teacher.getSname()+" 性别: "+teacher.getSex()+" 年龄: "+teacher.getAge()+" 电话: "+teacher.getTel()+" 邮箱:"+teacher.getEmail());}}

package ListLink;public class Teacher {private String sno;private String sname;private String sex;private int age;private String tel;private String email;public Teacher(String sno,String sname,String sex,int age,String tel,String email){this.sno=sno;this.sname=sname;this.sex=sex;this.age=age;this.tel=tel;this.email=email;}public Teacher(Teacher teacher){this.sno=teacher.sno;this.sname=teacher.sname;this.sex=teacher.sex;this.age=teacher.age;this.tel=teacher.tel;this.email=teacher.email;}public String getSno() {return sno;}public String getSname() {return sname;}public String getSex() {return sex;}public int getAge() {return age;}public String getTel() {return tel;}public String getEmail() {return email;}}


原创粉丝点击