Java数据结构--双向链表的实现
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数据结构--双向链表的实现的更多相关文章
- Java数据结构——双向链表
//================================================= // File Name : DoublyLinked_demo //------------- ...
- Java数据结构之线性表
从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...
- Java数据结构和算法 - 链表
Q: 为什么要引入链表的概念?它是解决什么问题的? A: 数组作为数据存储结构有一定的缺陷,在无序数组中,搜索是低效的:而在有序数组中,插入效率又很低:不管在哪一个数组中删除效率都很低:况且一个数组创 ...
- (6)Java数据结构-- 转:JAVA常用数据结构及原理分析
JAVA常用数据结构及原理分析 http://www.2cto.com/kf/201506/412305.html 前不久面试官让我说一下怎么理解java数据结构框架,之前也看过部分源码,balab ...
- Java简单双向链表实现 @version 1.0
package com.list; /** * 数据结构和算法Java表示 双向链表 * * @version 1.0 * @author 小明 * */ public class MyDoublel ...
- Java数据结构和算法(一)线性结构
Java数据结构和算法(一)线性结构 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 线性表 是一种逻辑结构,相同数据类型的 ...
- 一文掌握关于Java数据结构所有知识点(欢迎一起完善)
在我们学习Java的时候,很多人会面临我不知道继续学什么或者面试会问什么的尴尬情况(我本人之前就很迷茫).所以,我决定通过这个开源平台来帮助一些有需要的人,通过下面的内容,你会掌握系统的Java学习以 ...
- Java数据结构和算法(四)--链表
日常开发中,数组和集合使用的很多,而数组的无序插入和删除效率都是偏低的,这点在学习ArrayList源码的时候就知道了,因为需要把要 插入索引后面的所以元素全部后移一位. 而本文会详细讲解链表,可以解 ...
- Java数据结构之队列的实现以及队列的应用之----简单生产者消费者应用
Java数据结构之---Queue队列 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在 ...
随机推荐
- zookeeper3.4.6安装
1.关闭防火墙 service iptables stop chkconfig iptables off 2.编辑hosts文件: vi /etc/hosts 192.168.99.6 JacK6 1 ...
- 一步一步安装配置Ceph分布式存储集群
Ceph可以说是当今最流行的分布式存储系统了,本文记录一下安装和配置Ceph的详细步骤. 提前配置工作 从第一个集群节点开始的,然后逐渐加入其它的节点.对于Ceph,我们加入的第一个节点应该是Moni ...
- SVN : 在SVN检测下来的Maven项目没有Maven标志
在Ecplise使用import->从SVN检出项目, 检出的项目没有了 Maven标志 解决方案 右键点击项目->configure->Convert to Maven Proje ...
- 实验1: Cisco路由器基础配置
实验 1: Cisco路由器基础配置 1. 路由器的运行模式:Router> 用户模式,通常用来查看统计信息,但不能修改路由器的设置.Router# 特许模式,可以查看并修改 ...
- 3、IP地址划分
划分子网方法:1.你所选择的子网掩码将会产生多少个子网?:2 的x 次方(x 代表被借走的主机位数)2.每个子网能有多少主机?: 2 的y 次方-2(y 代表被借走之后剩余的主机位数)3.块大小:bl ...
- java核心技术----接口
接口:用来描述类具有什么功能,而并不给出每个功能的具体实现. 一个类可以实现一个或多个接口. 克隆(深拷贝):创建一个新对象,且新的对象的状态与原始对象的状态相同.当对克隆的新对象进行修改时,不会影响 ...
- selenium 多表单切换
frame/iframe表单嵌套页面的应用.WebDrivr只能在一个页面上对元素识别与定位,对于在frame/iframe表单内嵌页面上的元素无法直接定位.这时需要使用 switch_to.fram ...
- winform应用如何发布(不用打包)、并提醒用户自动更新
环境:VS2019 community C# winform 应用程序 设计应用程序界面 编写对应代码 使用PS设计程序标识ICON F4打开属性: 设置ICON 设置背景 打开项目属性 打开“发 ...
- 登录sql sever
MSSQLSEVER是默认的实例名,一台计算机可以安装多个实例名,相当于多个服务器,互不影响. workbench是MySQL 服务器的一个图形化管理客户端,功能类似于MySQL Command 安装 ...
- 2019ccpc哈尔滨打铜记
小学生日记: 2019.10.13,哈尔滨,打了个铜 开头 先说结论,这次失败,我的锅70%,sdl的锅5%,ykh25% Day0 周五, 我们队出现了奇怪的厄运上身 首先是我中途在飞机上数据线突然 ...