双向链表
来源:互联网 发布:淘宝日本服装代购 编辑:程序博客网 时间:2024/06/05 08:15
在双端基础上
//双向链表public class LinkList2 { //车头 private Node first; //车尾 private Node last; //默认构造方法 public LinkList2(){ first=null; last=null; } //插入一个节点,在头结点后进行插入 public void insertFirst (int value){ Node node = new Node(value); if(isEmpty()){ last=node; }else{ first.previous=node; } node.next=first; first=node; //注意先后步骤 //倒着插入 } //删除一个结点,在头结点后进行删除 public Node deleteFirst(){ Node tmp = first; if(first.next==null){ last = null; }else{ first.next.previous=null; } first=tmp.next; return tmp; } //删除结点,从尾部进行删除 public Node deleteLast(){ Node tmp = last; if(first.next==null){ first = null; }else{ last.previous.next=null; last = last.previous; } return last; } //插入一个结点,从尾结点插入 public void insertLast(int value){ Node node = new Node (value); if(isEmpty()){ first = node; }else{ last.next=node; } node.previous=last; last = node; } //显示方法 public void display(){ Node current = first; while(current!=null){ current.display(); current = current.next; } System.out.println(); } //查找方法 public Node find (int value){ Node current = first; while(current.data!=value){ if(current.next==null){ return null; } current = current.next; } return current; } //删除方法,根据数据域进行删除 public Node delete(int value){ Node current = first; while(current.data!=value){ if(current.next==null){ return null; } current = current.next; } if(current==first){ first = first.next; }else{ current.previous.next=current.next; } return current; } //判断是否为空 public boolean isEmpty(){ return (first==null); }}
阅读全文
0 0
- SzNOI 双向约瑟夫(双向链表)
- 双向链表&&堆栈
- 双向链表
- 使用双向链表
- 双向链表
- 双向循环链表
- 双向循环链表
- 双向链表
- 实现双向链表
- 双向循环链表
- 建立双向链表
- 双向链表
- 双向链表
- 双向循环链表
- 双向链表
- 链表-双向链表
- 双向链表
- 双向动态链表
- 冒泡排序之java数组实现
- C++中 变量y0y1等变量 的冲突问题
- LeetCode-627. Swap Salary
- http与https区别及https是如何保障安全性
- swift xxxfile no find / bridging no exit
- 双向链表
- layUI初步使用
- 算法分析与设计丨第三周丨LeetCode(6)——Find Largest Value in Each Tree Row(Medium)
- 数据挖掘中的可视化方法
- BootStrap学习笔记
- 社会网络分析入门书目导读
- 使用花生壳实现Tomcat服务器对外映射
- 蛇形填数(二)
- java加解密之DES多种使用方式