PS:双端链表(持有对最后一个节点的引用,允许表尾操作与表头操作等效的功能)

public class DoubleLinkedList {
//节点类
static class Node {
public Object data;
public Node next; public Node(Object dd) {
data = dd;
} @Override
public String toString() {
return String.valueOf(data);
}
} public Node head;//头结点
public Node tail;//尾节点 public DoubleLinkedList() {
head = null;
tail = null;
} public boolean isEmpty() {
return (head == null);
} // 表头插入
public void insertFirst(double dd) {
Node newLink = new Node(dd);
if (isEmpty()) {// 第一次插入节点
tail = newLink;
}
newLink.next = head;
head = newLink;
} // 表尾插入
public void insertLast(double dd) {
Node newLink = new Node(dd);
if (isEmpty()) {
head = newLink;
} else {
tail.next = newLink;
}
tail = newLink;
} // 删除表头
public void deleteFirst() {
head = head.next;
if (head.next == null) {
tail = null;
}
} public void displayList() {
System.out.print("List (first--->last)");
Node current = head;
while (current != null) {
System.out.print(current.data + " ");
current = current.next;
}
System.out.println();
} public static void main(String[] args) {
DoubleLinkedList linkedList = new DoubleLinkedList();
for (int i = 0; i <= 30; i += 5) {
// 头插
linkedList.insertFirst(i);
}
System.out.println("头插");
linkedList.displayList();
// 删除表头数据
linkedList.deleteFirst();
linkedList.displayList();
linkedList = new DoubleLinkedList();
for (int i = 0; i <= 30; i += 5) {
// 尾插
linkedList.insertLast(i);
}
System.out.println("尾插");
linkedList.displayList();
linkedList.deleteFirst();
linkedList.displayList();
}
}

  

java实现双端链表的更多相关文章

  1. Java数据结构——双端链表

    //================================================= // File Name : FirstLastList_demo //------------ ...

  2. Java数据结构——用双端链表实现队列

    //================================================= // File Name : LinkQueue_demo //---------------- ...

  3. Java单链表、双端链表、有序链表实现

    单链表: insertFirst:在表头插入一个新的链接点,时间复杂度为O(1) deleteFirst:删除表头的链接点,时间复杂度为O(1) 有了这两个方法,就可以用单链表来实现一个栈了,见htt ...

  4. 《Java数据结构与算法》笔记-CH5-链表-3双端链表

    /** * 双端链表的实现 */ class LinkA { public long dData; public LinkA next; public LinkA(long d) { dData = ...

  5. 队列(存储结构双端链表)--Java实现

    /*用链表实现的队列--使用的是双端链表 *注意:空指针错误肯定是引用没有指向对象 * */ public class MyLinkedQueue { private MyFirstAndLastLi ...

  6. 双端链表--Java实现

    /*双端链表--比普通链表多了一个指向最后一个节点的引用 * 特点: 链表可以进行尾巴插入--输出顺序和输入顺序一致 * 但是不可以进行尾巴删除因为没有倒数第二节点的引用 * */ public cl ...

  7. JAVA基础——链表结构之双端链表

    双端链表:双端链表与传统链表非常相似.只是新增了一个属性-即对最后一个链结点的引用 如上图所示:由于有着对最后一个链结点的直接引用.所以双端链表比传统链表在某些方面要方便.比如在尾部插入一个链结点.双 ...

  8. java数据结构——单链表、双端链表、双向链表(Linked List)

    1.继续学习单链表,终于摆脱数组的魔爪了,单链表分为数据域(前突)和引用域(指针域)(后继),还有一个头结点(就好比一辆火车,我们只关心火车头,不关心其它车厢,只需知晓车头顺藤摸瓜即可),头结点没有前 ...

  9. 循环双端链表(python)

    # -*- coding: utf-8 -*- class Node(object): __slots__ = ('value', 'prev', 'next') # save memory def ...

随机推荐

  1. Boost编程之获取可执行文件的当前路径

    #include <boost/filesystem/path.hpp> #include <boost/filesystem/operations.hpp> std::str ...

  2. Yii创建前台和后台登录表单和通过扩展 CWebUser 增加信息到 Yii::app()->user

    我参考了这篇文章来构建项目的前台和后台的目录结构.感谢Andy的这篇文章.按照所有的步骤,您将有单独的前台和后台面板,如: http://localhost/index.php // 前台 http: ...

  3. kill,killall,top,free,vmstat,iostat,watch命令

    kill命令 Linux 中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以 使用Ctrl+C键,但是,对 ...

  4. iOS 操作系统架构

    Mac OS 和 iOS 操作系统架构 做iOS开发已经半年多了,但是感觉对iOS开发的理解却还只停留在表面,昨天刚把两个项目结了,今天打算学了一下iOS系统的架构,以便于更好的理解和开发. 首先看一 ...

  5. 联系我们_站内信息_站内资讯_网上定制衬衫|衬衫定制|衬衫定做-ChenShanLe衬衫乐

    联系我们_站内信息_站内资讯_网上定制衬衫|衬衫定制|衬衫定做-ChenShanLe衬衫乐 衬衫乐定制网是国内领先的成衣定制机构,专业从事衬衫网络在线定制.高级定制服装的价格不菲,而衬衫乐运用了&qu ...

  6. solr全文检索基本原理

    场景:小时候我们都使用过新华字典,妈妈叫你翻开第38页,找到“坑爹”所在的位置,此时你会怎么查呢?毫无疑问,你的眼睛会从38页的第一个字开始从头至尾地扫描,直到找到“坑爹”二字为止.这种搜索方法叫做顺 ...

  7. security Export/import

    export [-k keychain] [-t type] [-f format] [-w] [-p format] [-P passphrase] [-o outfile] Export one ...

  8. Angular基础教程:表达式日期格式化[转]

    本地化日期格式化: ({{ today | date:'medium' }})Nov 24, 2015 2:19:24 PM ({{ today | date:'short' }})11/24/15 ...

  9. volatile-java关键字

    volatile的作用: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值. 简单地说就是防止编译器对代码进行优化.比如如下程序: XBYTE[2]=0x55; XBYTE[2 ...

  10. ios 常用字符串NSString的操作

    //将NSData转化为NSString        NSString* str = [[NSString alloc] initWithData:response encoding:NSUTF8S ...