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. 使用Airtest进行UI自动化测试

    一.环境搭建 1.Airtest客户端下载 访问官网http://airtest.netease.com/,根据自己的系统下载相应的客户端安装: 2.python工具下载与环境搭建 在本地python ...

  2. Basic Thought / Data Structure: 差分 Difference

    Intro: 作为查询界的\(O(1)\)王者--前缀和的亲兄弟,差分,他可是修改界的\(O(1)\)王者 Prerequisite knowledge: 前缀和 Function: 仅单次询问的区间 ...

  3. linux下误清用户/home下的文件怎么办?

    2016-08-19 10:38:10   有时候我们不小心把home目录下的用户目录删除了,出现上图情况,每行开头直接变成-bash-3.2$这种形式而不是[lyp@centos7 ~]$这种,这时 ...

  4. Python中__init__的用法和理解

    在Python中定义类经常会用到__init__函数(方法),首先需要理解的是,两个下划线开头的函数是声明该属性为私有,不能在类的外部被使用或访问.而__init__函数(方法)支持带参数类的初始化, ...

  5. Shiro Web集成及拦截器机制(四)

    Shiro与 Web 集成 Shiro 提供了与 Web 集成的支持,其通过一个 ShiroFilter 入口来拦截需要安全控制的 URL,然后进行相应的控制,ShiroFilter 类似于如 Str ...

  6. ubuntu 中使用makefile组织c++多文件的简陋方法

    现有类定义Sales_item.hpp Sales_item.cpp 主函数my7_31.cpp(代码来源于c++primer 习题解答7_31) 希望使用makefile在Ubuntu中进行编译链接 ...

  7. CSS绝对定位absolute详解

    转:https://www.jianshu.com/p/a3da5e27d22b     之前介绍过CSS浮动float详解,本篇介绍的绝对定位absolute和浮动float有部分相似性.如果能理解 ...

  8. CCF_201612-3_炉石传说

    http://115.28.138.223/view.page?gpid=T45 模拟. #include<iostream> #include<cstring> #inclu ...

  9. HDU_3652_数位dp

    http://acm.hdu.edu.cn/showproblem.php?pid=3652 cal(a,b,c,d),a表示当前位置,b表示是否有13的3种状态,c表示前面的数%13后的剩余,d表示 ...

  10. 使用logstash结合logback收集微服务日志

    因为公司开发环境没有装elk,所以每次查看各个微服务的日志只能使用如下命令 这样子访问日志是并不方便,于是想为每个微服务的日志都用logstash收集到一个文件out中,那以后只要输出这个文件则可查看 ...