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.继续学习单链表,终于摆脱数组的魔爪了,单链表分为数据域(前突)和引用域(指针域)(后继),还有一个头结点(就好比一辆火车,我们只关心火车头,不关心其它车厢,只需知晓车头顺藤摸瓜即可),头结点没有前 ...
随机推荐
- Chapter 16_2 继承
类也是对象,所有它们也可以从其他类获得方法.这就是“继承”,可以在Lua中表示: Account = { balance = } function Account:new(o) o = o or {} ...
- 查找一个数组中最小的前n项
/****************************************************************** find the biggest x number in a s ...
- vb6加载时提示出错,窗体log文件中错误信息为:控件 XX 的类 MSComctlLib.ListView 不是一个已加载的控件类。
解决办法:单击[工程] -- [部件] 添加此Microsoft Windows Common Controls-6.0 (SP6)部件,如果列表中没有,浏览到~\project\包\Support中 ...
- 2.Thread中的实例方法
(转自:http://www.cnblogs.com/xrq730/p/4851233.html) Thread类中的方法调用方式: 1.this.XXX 这种调用方式表示的线程是:线程实例本身 2. ...
- 学习笔记——备忘录模式Memento
备忘录模式,可以将当前状态保存,并随时恢复. Originator存在状态state,当需要保存此状态时,通过CreateMemento创建一个备忘录对象Memento保存此状态:而需要恢复相应状态时 ...
- 数据库文件导入导出操作,以及赋予权限SQL语句
1.导出数据库xxxx和tlog(经过测试,没有问题)# /data/mysql/bin/mysqldump -u root -ppassword qq9x | gzip > /home/xxx ...
- 河南多校联合训练 南阳理工 1261 音痴又音痴的LT
描述 LT最近一直在无限循环薛之谦的歌,简直都中毒了!可是呢…他的歌LT还是不会唱(其实不止他的歌LT不会唱,所有人的歌LT都不会唱…因为LT是标准的音痴)可是LT又很喜欢唱歌(所以LT不仅是音痴还是 ...
- yaf for ubuntu安装
一.安装yaf需要的扩展 apt-get install perl-modules apt-get install libpcrecpp0 apt-get install libpcre3 libpc ...
- 自定义控件之--继承控件(圆形TextView)
师从郭大,自学于心,继承控件无疑就是继承自现有控件,保持继承的控件的属性并进行必要的扩展. 比如下面这个自定义控件,它就保持了TextView的属性,并对TextView的外观进行必要的修改该来适 ...
- 使用httperrequest,模拟发送及接收Json请求
使用httpreques\Json-Handle\tcpdump\wireshark工具进行,抓取手机访问网络的包,分析request及response请求,通过httprequester来实现模拟发 ...