【JAVA数据结构】双向链表
2016-09-21 22:07
295 查看
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点
下面直接来看实现:
调用以下方法来查看结果:
输出结果:
如有疑问,欢迎提出。
我的博客:blog.scarlettbai.com
下面直接来看实现:
/** * <p>双向链表实现(先进后出)</p> * @author white * @version $Id: MyLinkedList, v 0.1 2016/9/21 0021 下午 8:32 white Exp $ */ public class MyLinkedList<T> { /** 栈顶元素 */ private Node first; /** 栈底元素 */ private Node last; /** 链表大小 */ private int size = 0; /** 双向链表结构 */ private class Node { T item; Node next; Node prev; } /** * 链表是否为空 * @return */ public boolean isEmpty() { return size == 0; } /** * 将元素压入栈顶 * @param item */ public void push(T item) { if (size == 0) { first = new Node(); first.item = item; last = first; size++; } else if (size > 0) { Node oldFirst = first; first = new Node(); first.item = item; first.next = oldFirst; oldFirst.prev = first; last = oldFirst; size++; } } /** * 取出链表的第一个元素 * @return */ public T pop() { if (size == 0) { throw new ArrayIndexOutOfBoundsException(); }else if (size == 1){ Node oldFirst = first; first = null; size--; return oldFirst.item; }else { Node oldFirst = first; first = first.next; first.prev = null; size--; return oldFirst.item; } } /** * 取栈深度 * @return */ public int size() { return size; } }
调用以下方法来查看结果:
public void test() { MyLinkedList<String> myLinkedList = new MyLinkedList<String>(); System.out.println("cosSize:" + myLinkedList.size()); for (int i = 0; i < 15; i++) { myLinkedList.push("aaa" + i); } System.out.println("initSize:" + myLinkedList.size()); for (int i = 0; i < 15; i++) { System.out.println(myLinkedList.pop()); } System.out.println("popSize:" + myLinkedList.size()); }
输出结果:
cosSize:0 initSize:15 aaa14 aaa13 aaa12 aaa11 aaa10 aaa9 aaa8 aaa7 aaa6 aaa5 aaa4 aaa3 aaa2 aaa1 aaa0 popSize:0
如有疑问,欢迎提出。
我的博客:blog.scarlettbai.com
相关文章推荐
- 数据结构:线性表的链式存储(双向链表)--Java实现
- 数据结构--双向链表实现(java)
- 【Java数据结构】2.2双向链表的简单实现
- 数据结构-双向链表(一)(java)
- java数据结构 四(双向链表)
- 【Java数据结构】2.3双向链表的迭代实现
- Java中的数据结构
- Java - 编程基础:Java中的数据结构(1)
- Java中的数据结构
- java的数据结构
- java中常用的数据结构
- java的数据结构
- Java基础:Util包下常用的数据结构介绍
- java的数据结构
- Java - 编程基础:Java中的数据结构(2)
- 我要点数据结构之JAVA语言描述的题
- Java2实用教程(第二版)程序代码——第二十六章 常见数据结构的Java实现
- 多种数据结构的Java实现(精)
- 数据结构之应用 "栈(Stack)" 实现: 解析算术表达式及计算求值 (C#/Java)
- [技术天地] Java 常用数据结构深入分析(Vector、ArrayList、List、Map)