java学习经验总结------双向链表的实现


双向链表的建立与单链表类似,只是需要使用pre指针指向前一个结点,并且在删除添加时不仅仅考虑next

package datastructure;

public class DoubleLinkedList {//双向链表的构造使用

	public static void main(String[] args) {
// TODO 自动生成的方法存根
DoubleList dl = new DoubleList();
dl.empty_add("5");
dl.empty_add("3");
dl.empty_add("2");
dl.empty_add("1");
dl.insert(2, "8");
dl.orderprint();
dl.reverseorderprint();
} }
class DoubleList{
public Dlnode first;//头指针
public Dlnode current;//当前结点
private int count=0;//结点个数
public DoubleList() {
// TODO 自动生成的构造函数存根
this.first=new Dlnode(null);
current=first;
first.next=null;
}
public int getCount() {//得到结点个数
return count;
}
public void empty_add(String word) {//由空链表添加结点
Dlnode newnode = new Dlnode(word);
//current=first;
while(current.next!=null)
current=current.next;
current.next=newnode;
newnode.pre=current;
newnode.next=null;
current=current.next;
this.count++; }
public void orderprint() {//按照顺序遍历
Dlnode now; for(now=first.next;now!=null;now=now.next)
System.out.print(now.getWord());
if(now==null)
System.out.println("null");
System.out.println("结点个数为:"+this.getCount()); /*System.out.println(current.getWord());*/
}
public void reverseorderprint() {//按照逆序遍历
while(current!=null)
{
System.out.print(current.getWord());
current=current.pre;
}
System.out.println("结点个数为:"+this.getCount());
}
public void insert(int location,String word) {//在指定地点插入 if(location>count)
System.out.println("已超过结点个数,无法插入!!!");
else {
Dlnode now=first;
while(true) {
if(location==0)
break;
else {
now=now.next;
location--;
}
}
Dlnode temp = new Dlnode(word);
now.pre.next=temp;
temp.pre=now.pre;
now.pre=temp;
temp.next=now;
this.count++; }
}
/*public void delete(int location) {//删除功能留置,与添加类似
if(location>count)
}*/ }
class Dlnode{//链表结点
private String word;
public Dlnode pre;
public Dlnode next;
public Dlnode(String word) {
// TODO 自动生成的构造函数存根
this.word=word;
}
public String getWord() {
return word;
}
public void setWord(String word) {
this.word = word;
} }

Java数据结构--双向链表的实现的更多相关文章

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

    //================================================= // File Name : DoublyLinked_demo //------------- ...

  2. Java数据结构之线性表

    从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...

  3. Java数据结构和算法 - 链表

    Q: 为什么要引入链表的概念?它是解决什么问题的? A: 数组作为数据存储结构有一定的缺陷,在无序数组中,搜索是低效的:而在有序数组中,插入效率又很低:不管在哪一个数组中删除效率都很低:况且一个数组创 ...

  4. (6)Java数据结构-- 转:JAVA常用数据结构及原理分析

    JAVA常用数据结构及原理分析  http://www.2cto.com/kf/201506/412305.html 前不久面试官让我说一下怎么理解java数据结构框架,之前也看过部分源码,balab ...

  5. Java简单双向链表实现 @version 1.0

    package com.list; /** * 数据结构和算法Java表示 双向链表 * * @version 1.0 * @author 小明 * */ public class MyDoublel ...

  6. Java数据结构和算法(一)线性结构

    Java数据结构和算法(一)线性结构 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 线性表 是一种逻辑结构,相同数据类型的 ...

  7. 一文掌握关于Java数据结构所有知识点(欢迎一起完善)

    在我们学习Java的时候,很多人会面临我不知道继续学什么或者面试会问什么的尴尬情况(我本人之前就很迷茫).所以,我决定通过这个开源平台来帮助一些有需要的人,通过下面的内容,你会掌握系统的Java学习以 ...

  8. Java数据结构和算法(四)--链表

    日常开发中,数组和集合使用的很多,而数组的无序插入和删除效率都是偏低的,这点在学习ArrayList源码的时候就知道了,因为需要把要 插入索引后面的所以元素全部后移一位. 而本文会详细讲解链表,可以解 ...

  9. Java数据结构之队列的实现以及队列的应用之----简单生产者消费者应用

    Java数据结构之---Queue队列 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在 ...

随机推荐

  1. python笔记05

    python笔记05 数据类型 上个笔记知识点总结: 列表中extend特性:extend,(内部循环,将另外一个列表,字符串.元组添加到extend前的列表中) li.extend(s),将s中元素 ...

  2. Maven的学习之路1

    对于下列这段Maven的命令行有不懂之处,在zgmzyr的博客上得到了解释.非常感谢这位博友,写在自己的随笔上以便查看和修改. 1. 创建项目 $ mvn archetype:generate -Dg ...

  3. BERT模型总结

    BERT模型总结 前言 ​ BERT是在Google论文<BERT: Pre-training of Deep Bidirectional Transformers for Language U ...

  4. js---描述链表

    js描述链表 有些情况下js的数组结构在实际使用中速度很慢,此时可以考虑用链表来代替它: //链表类 function Node(element){ this.element=element; thi ...

  5. DNS隧道工具:iodine使用

      iodine可以通过一台dns服务器制造一个IPv4数据通道,特别适合在目标主机只能发送dns请求的网络中环境中使用.iodine是基于C语言开发的,分为服务端程序iodined和客户端程序iod ...

  6. Spring注解开发系列Ⅸ --- 异步请求

    一. Servlet中的异步请求 在Servlet 3.0之前,Servlet采用Thread-Per-Request的方式处理请求,即每一次Http请求都由某一个线程从头到尾负责处理.如果要处理一些 ...

  7. c++中的动态内存分配

    使用new和delete动态的分配和释放内存 使用new来分配新的内存块,通常情况下,如果成功,new将返回一个指针,指向分配的内存,否则将引发异常,使用new时,需要指定要为那种数据类型分配内存: ...

  8. 2.OpenStack 网络简介(neutron)

    OpenStack 网络简介(neutron) 概述和组件 OpenStack 网络允许您创建和管理网络对象, 如网络.子网和端口, 其他 OpenStack 服务可以使用.插件可以实现, 以适应不同 ...

  9. HDU_3410_单调栈

    http://acm.hdu.edu.cn/showproblem.php?pid=3410 初探单调栈,从左往右,求l,从右往左,求r. #include<iostream> #incl ...

  10. 【原创】为什么Mongodb索引用B树,而Mysql用B+树?

    引言 好久没写文章了,今天回来重操旧业.毕竟现在对后端开发的要求越来越高,大家要做好各种准备. 因此,大家有可能遇到如下问题 为什么Mysql中Innodb的索引结构采取B+树? 回答这个问题时,给自 ...