Java单链表(双端链表)简单实现
来源:互联网 发布:第三方支付平台 知乎 编辑:程序博客网 时间:2024/06/05 19:03
1、节点数据结构
public class LinkNode { public int data; public LinkNode next; public LinkNode(){ } public LinkNode(int value){ this.data = value; this.next = null; }}
2、单链表实现
public class SingleLink { public LinkNode head; public SingleLink(){ head = new LinkNode(); head.next = null; } public void insertFirst(int value){ LinkNode newLink = new LinkNode(value); if(head.next == null){ head.next = newLink; } else { LinkNode temp = head.next; head.next = newLink; newLink.next = temp; } } public int deleteFirst(){ if(isEmpty()) throw new EmptyLinkException("current link is empty"); LinkNode temp = head.next; head.next = head.next.next; return temp.data; } public LinkNode find(int value){ if(isEmpty()) throw new EmptyLinkException("current link is empty"); LinkNode temp = head.next; while(temp != null){ if(value == temp.data){ break; } temp = temp.next; } return temp; } public void displayLink(){ LinkNode temp = head.next; while(temp != null){ System.out.println(temp.data); temp = temp.next; } } public boolean isEmpty(){ return (head.next == null); } /** * @param args */ public static void main(String[] args) { Random random = new Random(); SingleLink singleLink = new SingleLink(); for(int i=0;i<10;i++){ singleLink.insertFirst(random.nextInt(100)); } singleLink.displayLink(); int temp = random.nextInt(100); System.out.println("try to find: " + temp); System.out.println(singleLink.find(temp) == null?"not found":singleLink.find(temp).data); for(int i=0;i<10;i++){ System.out.println(singleLink.deleteFirst()); } }}
3、注意
(1)双端链表是在单链表基础上增加一个对链表最后一个节点的引用
(2)双端链表可以增加一个insertLast方法
(3)双端链表【不能】解决从链表末端删除节点的问题
双向链表可以在头部和尾部进行节点【添加】和【删除】操作
阅读全文
0 0
- Java单链表(双端链表)简单实现
- java 单链表简单实现
- 简单算法(java实现)
- java数据结构之单链表的简单实现
- 链表用java实现简单单链表linkedlist
- java实现简单的单链表结构
- java实现单链表的简单划分
- 简单学生成绩管理系统(Java实现)
- 简单选择排序(C & Java 实现)
- 简单选择排序(java实现)
- 单例模式简单实现(java)
- 简单的ftp服务器实现 (java)
- java实现简单算法(一)
- java实现简单算法(三)
- 简单工厂模式(java语言实现)
- Java实现简单的AOP(一)
- 简单记事本的实现(JAVA)
- Java简单定时任务实现(Quartz)
- 一分钟了解“let us 和 let's 的区别”
- ffmpeg 最基本的使用记录
- 2017/7/19 学习心得 html5
- 今日总结
- 来到传智的第一天
- Java单链表(双端链表)简单实现
- Android动画框架(三)----布局动画&Activity过渡动画
- C# 简单的GDI验证码生成
- makefile的命名和写法简化
- 1047. Student List for Course (25)
- 数据结构总结
- Android 下载网络图片
- Matlab安装MinGW64编译器
- git push 每次都需要输入用户名和密码 TortoiseGit 不用每次输入用户名和密码的方法