单链表对象操作--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;}}
阅读全文
0 0
- 单链表对象操作--java
- java文件对象操作
- Java操作XML对象
- redis java对象操作
- JavaScript操作Java对象
- JNI操作Java对象
- JavaScript操作java对象
- java对象赋值操作
- Java操作HDFS对象
- Java操作ZooKeeper对象
- Java操作HBase对象
- Java操作Sqoop对象
- java HashMap操作对象
- JAVA操作SQOOP对象
- java中引用操作对象
- java 对象的比较操作
- java 通过反射操作对象
- java程序操作Geometry对象
- Android响应式UI教程
- ijkplayer iOS 打包之路
- hashMap原理解析
- BZOJ 2724 浅谈分块算法求区间众数
- Organopolysilazane IOTA-OPSZ-9150
- 单链表对象操作--java
- nrf51822-提高nordic ble数据发送速率
- jtemplates setParam 简单用法
- Sass预编译语言之@mixin混合的几种声明和调用方式
- Ubuntu下安装Remix OS双系统
- AR项目的简单实现过程
- 神奇密码锁 bfs
- React Native项目建立
- JAVA虚拟机总结以看别人Blog理解