java数据结构之链表的实现
这个链表的内部是使用双向链表来表示的,但是并未在主函数中进行使用
/**
* 链表
* 2016/4/26
**/
class LinkList{
Node head = new Node();
Node tail = new Node();
int size = 0;
public LinkList(){
head.next = tail;
this.head.date = "head";
tail.last = head;
tail.next = null;
this.tail.date = "tail";
} //内部节点类k
class Node{
String date; //数据域
Node next; //指向下一个节点
Node last; //指向上一个节点
Node(){};
Node(String date){
this.date = date;
this.next = null;
this.next = null;
}
} //向链表中添加一个数据 在指定的位置上插入
public void Insert(String date){
Node newNode = new Node(date);
newNode.next = this.head.next;
newNode.last = this.head;
this.head.next.last = newNode;
this.head.next = newNode;
System.out.println("插入数据"+date+"成功");
this.size++;
} //遍历链表输出
public void PrintLink( LinkList linklist){
Node preNode = new Node();
preNode.next = this.head.next;
System.out.print("遍历输出结果:");
while(true){
System.out.print(preNode.next.date+" -->");
if(preNode.next.next.next == null) break;
preNode.next = preNode.next.next;
}
System.out.println("遍历输出完成~~~");
} //删除链表中的某一个数
public void DeleteLink(String date){
Node preNode = new Node();
preNode = this.head;
Node node = null;
while(preNode.next != this.tail){ node = preNode;
preNode = preNode.next;
if(preNode.date == date){
node.next = preNode.next;
System.out.println("删除元素"+date+"成功");
this.size--;
}
}
}
} public class DoublyLinkList{
//主函数测试
public static void main(String[] args){
LinkList linklist = new LinkList();
linklist.Insert("lv1");
linklist.Insert("lv2");
linklist.Insert("lv3");
linklist.Insert("lv4");
linklist.Insert("lv5");
linklist.Insert("lv6");
linklist.Insert("lv7");
linklist.Insert("lv8");
linklist.Insert("lv9");
linklist.Insert("lv0");
linklist.Insert("lv11");
linklist.Insert("lv12");
linklist.Insert("lv13");
linklist.Insert("lv14");
System.out.println("链表的长度为:"+linklist.size);
linklist.PrintLink(linklist);
//删除lvbiao3
linklist.DeleteLink("lv3");
linklist.PrintLink(linklist); linklist.DeleteLink("lv14"); linklist.DeleteLink("lv12"); linklist.PrintLink(linklist);
System.out.println("tail:"+linklist.tail.date);
}
}
java数据结构之链表的实现的更多相关文章
- JAVA数据结构之链表
JAVA数据结构之链表 什么是链表呢? 链表作为最基本的数据结构之一,定义如下: 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的. 简单来说呢,链 ...
- JAVA数据结构——单链表
链表:一. 顺序存储结构虽然是一种很有用的存储结构,但是他有如下几点局限性:1. 因为创造线性表的时候已经固定了空间,所以当需要扩充空间时,就需要重新创建一个地址连续的更大的存储空间.并把原有的数据元 ...
- java数据结构之链表(java核心卷Ⅰ读书笔记)
1.链表 数组和ArrayList的一个重大缺陷就是:从中间位置删除一个元素要付出很大的代价,因为在这个元素删除之后,所有的元素都要向前端移动,在中间的某个位置插入一个元素也是这个原因. (小感悟:s ...
- 【Java数据结构】Java数据结构之链表反转
我们都知道用C可以很简单的实现单链表反转,今天来学习下,在Java中如何实现链表反转. 思路很简单,定义一个类,这个类分成2块,一块是表示自身的标志,另外一个存储指向下一个元素的引用.通过互换相邻两个 ...
- Java数据结构之链表(Linked List)
1.链表(Linked List)介绍 链表是有序的列表,但是它在内存存储结构如下: 2.特点: 链表是以节点的方式来存储,是链式存储 每个节点包含 data 域, next 域:指向下一个节点. 链 ...
- Java数据结构--单链表
#java学习经验总结------单链表的建立与结点的增删 在该链表结点有data数据,并且还有cpu,分给cpu随机的时间片,根据时间片大小进行结点data的排序 链表结点的建立 class Lin ...
- Java数据结构——用链表实现栈
//================================================= // File Name : LinkStack_demo //---------------- ...
- Java——数据结构(链表)
链表,可扩展长度,泛型. public class Link { Node header = null; //头结点 int length;//当前链表长度 class Node { Node nex ...
- java数据结构——单链表、双端链表、双向链表(Linked List)
1.继续学习单链表,终于摆脱数组的魔爪了,单链表分为数据域(前突)和引用域(指针域)(后继),还有一个头结点(就好比一辆火车,我们只关心火车头,不关心其它车厢,只需知晓车头顺藤摸瓜即可),头结点没有前 ...
随机推荐
- Python & virtualenv使用说明
virtualenv是virtual environment的缩写,可以创建独立的Python环境,用起来比较干净: 安装(已安装pip 或者 easy_install): 如果使用pip: pi ...
- winform/wpf 程序部署
(1):一些发布方式 ClickOnce是什么玩意儿,这个问题嘛,在21世纪的互联网严重发达的时代,估计也没有必要大费奏章去介绍了,弄不好的话,还有抄袭之嫌.因此,有关ClickOnce的介绍,各位朋 ...
- 【TestDirector】常见问题分析
1.IE7无法访问TD 问题原因:兼容性问题 解决方法:步骤一.以系统管理员身份登陆TD: 步骤二.找到TD服务器中TDBIN目录(缺省情况下是C:\Inetpub\TDBIN目录),用编辑器打开st ...
- AIX 永久修改环境变量
转自:http://blog.sina.com.cn/s/blog_5e3122450100stk5.html 方法一:PATH=$PATH:/usr/XX export PATH重启一 ...
- NYOJ-448 寻找最大数(贪心)
NYOJ-448 寻找最大数 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920 ...
- python基础(三)--列表、元组、字典
一.列表: 有序序列,支持索引.切片.循环(for,while) 元素可以被修改: 元素可以是任何数据类型(数字,字符串,列表,布尔值...),可以嵌套: ##增 1.append(object) ...
- iOS学习笔记(01) - 泛型
决定新开一坑,在不断学习的同时分享自己的学习历程给大家,既是对自己学习的记录,又希望能对大家提供些微的帮助. 这一篇文章主要来介绍泛型的意义.使用与声明方法等. 1.泛型:限制类型 1.1.泛型使用场 ...
- 封装一个Ajax工具函数
/*封装一个ajax工具函数*/ window.$ = {}; /*通过$定义一个ajax函数*/ /* * 1. type string 请求的方式 默认是get * 2. url ...
- 错误提示 Unsupported compiler 'com.apple.compilers.llvmgcc42' selected for architecture 'i386'
转自http://blog.csdn.net/cyuyanenen/article/details/51444974 警告提示:Invalid C/C++ compiler in target Cor ...
- Webdriver实现下载功能,屏蔽掉windows弹出的对话框,FireFox下设置浏览器的属性,两种实现方式:
一.使用一个全新的FireFox浏览器打开Web应用,浏览器不带任何插件,也未对浏览器做任何默认配置,但需要对浏览器属性进行配置 // 获取浏览器的所有配置文件 ProfilesIni allProf ...