博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【JAVA数据结构】双向链表
阅读量:4077 次
发布时间:2019-05-25

本文共 2203 字,大约阅读时间需要 7 分钟。

双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点

下面直接来看实现:

/** * 

双向链表实现(先进后出)

* @author white * @version $Id: MyLinkedList, v 0.1 2016/9/21 0021 下午 8:32 white Exp $ */public class MyLinkedList
{
/** 栈顶元素 */ 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
myLinkedList = new MyLinkedList
(); 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:0initSize:15aaa14aaa13aaa12aaa11aaa10aaa9aaa8aaa7aaa6aaa5aaa4aaa3aaa2aaa1aaa0popSize:0

如有疑问,欢迎提出。


我的博客:blog.scarlettbai.com

转载地址:http://tesni.baihongyu.com/

你可能感兴趣的文章
Mac环境下svn的使用
查看>>
github简单使用教程
查看>>
如何高效利用GitHub
查看>>
环境分支-git版本管理
查看>>
Spring AOP + Redis + 注解实现redis 分布式锁
查看>>
支付宝生活号服务号 用户信息获取 oauth2 登录对接 springboot java
查看>>
CodeForces #196(Div. 2) 337D Book of Evil (树形dp)
查看>>
uva 12260 - Free Goodies (dp,贪心 | 好题)
查看>>
uva-1427 Parade (单调队列优化dp)
查看>>
【设计模式】学习笔记14:状态模式(State)
查看>>
poj 1976 A Mini Locomotive (dp 二维01背包)
查看>>
斯坦福大学机器学习——因子分析(Factor analysis)
查看>>
linux对于没有写权限的文件如何保存退出vim
查看>>
IntelliJ IDEA 下的svn配置及使用的非常详细的图文总结
查看>>
【IntelliJ IDEA】idea导入项目只显示项目中的文件,不显示项目结构
查看>>
ssh 如何方便的切换到其他节点??
查看>>
JSP中文乱码总结
查看>>
Java实现DES加密解密
查看>>
HTML基础
查看>>
Java IO
查看>>