/*双端链表--比普通链表多了一个指向最后一个节点的引用
* 特点: 链表可以进行尾巴插入--输出顺序和输入顺序一致
* 但是不可以进行尾巴删除因为没有倒数第二节点的引用
* */
public class MyFirstAndLastLinkedList {
public Link first;
public Link last; public MyFirstAndLastLinkedList() {
first = null;
last = null;
} public boolean isEmpty(){
return first == null;
} //头插入的时候注意空链表对last的处理
public void insertFirst(int key){
Link newLink = new Link(key);
if(isEmpty()){
last = newLink;
}
newLink.next = first;
first = newLink;
} //尾插入的时候注意空链表对first的处理
public void insertLast(int key){
Link newLink = new Link(key);
if(isEmpty()){
first = newLink;
}
else{
last.next = newLink;
}
last = newLink;
} //删除注意只有一个节点对last的处理
public Link deleteFirst(){
Link temp = first;
if(first.next == null){
last = null;
}
first = first.next;
return temp;
} public void displayLinkedList(){//顺链打印
//System.out.println("first---to----last");
Link current = first;
while(current!= null ){
current.diaplayLink();
System.out.print("");
current = current.next;
}
System.out.println();
} //测试该类
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6};
MyFirstAndLastLinkedList m = new MyFirstAndLastLinkedList(); for(int i = 0; i < arr.length; i++){
m.insertLast(arr[i]);
}
m.displayLinkedList(); } }

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

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

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

  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实现双端链表

    PS:双端链表(持有对最后一个节点的引用,允许表尾操作与表头操作等效的功能) public class DoubleLinkedList { //节点类 static class Node { pub ...

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

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

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

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

  8. 循环双端链表(python)

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

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

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

随机推荐

  1. openfire:基于开源 Openfire 聊天服务器 - 开发Openfire聊天记录插件

    基于开源 Openfire 聊天服务器 - 开发Openfire聊天记录插件 上一篇文章介绍到怎么在自己的Java环境中搭建openfire插件开发的环境,同时介绍到怎样一步步简单的开发openfir ...

  2. python函数式编程,列表生成式

    1.python 中常见的集中存储数据的结构: 列表 集合 字典 元组 字符串 双队列 堆 其中最常见的就是列表,字典. 2.下面讲一些运用循环获取字典列表的元素 >>> dic={ ...

  3. idea下使用autowire注解注入对象,结果初始化不到类

    如果idea下使用autowire注解注入对象,结果初始化不到类,明明使用快捷键alt+insert是可以找到该注入的对象的. 而我们在使用的时候,缺报错了??? 注意,当我们在注入对象的时候,我们留 ...

  4. temp-存储过程 以前的

    ---------------------------------------------------------------------------------------------------- ...

  5. python 作用域(LEGB)

    def fa(a): b = 200 c = 888 def fb(b): print(b) print(a) print(c) print(sum) return fb c = 2 sum = 10 ...

  6. 如何快速成长?我的java之路!

    由于一些外部的原因,我不得不从自己熟悉的php领域,转战到java战场.我个人觉得还是有些心得吧,不管怎么样,或多或少可能都会有那么些经历的人,和你一起走在这世上!尽管你不知道TA是谁. 其实,转换一 ...

  7. JS(三)

    上周介绍了JS中两个比较重要的东西,循环和函数,这周再给大家介绍一下BOM和DOM 一.BOM 1.首先来说一下什么是BOM,BOM即浏览器对象模型,说白一点就是与浏览器进行的交互的对象模型. 2.B ...

  8. Pagination(分页) 从前台到后端总结

    一:效果图 下面我先上网页前台和管理端的部分分页效果图,他们用的是一套代码.                                   回到顶部(go to top) 二:上代码前的一些知识 ...

  9. oracle存储过程中is和as区别

    在存储过程(PROCEDURE)和函数(FUNCTION)中没有区别:在视图(VIEW)中只能用AS不能用IS:在游标(CURSOR)中只能用IS不能用AS.

  10. vue-resource传参数到后端,后端取不到数据的问题

    先上一段代码: this.$http.post('xxx',{Search_Text:this.search_text}).then(function(response){ // 响应成功回调 thi ...