这个链表的内部是使用双向链表来表示的,但是并未在主函数中进行使用

 /**
* 链表
* 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数据结构之链表的实现的更多相关文章

  1. JAVA数据结构之链表

    JAVA数据结构之链表 什么是链表呢? 链表作为最基本的数据结构之一,定义如下: 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的. 简单来说呢,链 ...

  2. JAVA数据结构——单链表

    链表:一. 顺序存储结构虽然是一种很有用的存储结构,但是他有如下几点局限性:1. 因为创造线性表的时候已经固定了空间,所以当需要扩充空间时,就需要重新创建一个地址连续的更大的存储空间.并把原有的数据元 ...

  3. java数据结构之链表(java核心卷Ⅰ读书笔记)

    1.链表 数组和ArrayList的一个重大缺陷就是:从中间位置删除一个元素要付出很大的代价,因为在这个元素删除之后,所有的元素都要向前端移动,在中间的某个位置插入一个元素也是这个原因. (小感悟:s ...

  4. 【Java数据结构】Java数据结构之链表反转

    我们都知道用C可以很简单的实现单链表反转,今天来学习下,在Java中如何实现链表反转. 思路很简单,定义一个类,这个类分成2块,一块是表示自身的标志,另外一个存储指向下一个元素的引用.通过互换相邻两个 ...

  5. Java数据结构之链表(Linked List)

    1.链表(Linked List)介绍 链表是有序的列表,但是它在内存存储结构如下: 2.特点: 链表是以节点的方式来存储,是链式存储 每个节点包含 data 域, next 域:指向下一个节点. 链 ...

  6. Java数据结构--单链表

    #java学习经验总结------单链表的建立与结点的增删 在该链表结点有data数据,并且还有cpu,分给cpu随机的时间片,根据时间片大小进行结点data的排序 链表结点的建立 class Lin ...

  7. Java数据结构——用链表实现栈

    //================================================= // File Name : LinkStack_demo //---------------- ...

  8. Java——数据结构(链表)

    链表,可扩展长度,泛型. public class Link { Node header = null; //头结点 int length;//当前链表长度 class Node { Node nex ...

  9. java数据结构——单链表、双端链表、双向链表(Linked List)

    1.继续学习单链表,终于摆脱数组的魔爪了,单链表分为数据域(前突)和引用域(指针域)(后继),还有一个头结点(就好比一辆火车,我们只关心火车头,不关心其它车厢,只需知晓车头顺藤摸瓜即可),头结点没有前 ...

随机推荐

  1. informix建临时表索引

    对于特殊字段,比如外键,主键,在不知道外键主键名的情况下,需要如下操作select constrname from sysconstraints where constrtype='R' and ta ...

  2. wuzhi 五指 数据库仿 thinkphp

    在/coreframe/app/模块/libs/class/mydb.class.php 中编辑 调用 : $mydb = load_class("mydb","模块&q ...

  3. 。◕‿◕。TMD

    。◕‿◕。TMD TimeLimit: 2000/1000 MS (Java/Others)  MenoryLimit: 32768/32768 K (Java/Others) 64-bit inte ...

  4. stm32时钟配置总结

    stm32时钟配置时钟源: 1,HSE(高速外部时钟)即常见的外接8M晶振方案: 2,HSI(高速内部时钟) 即8M内部振荡时钟方案: 3,LSE(低速外部时钟)即常见的32.768Khz晶振方案: ...

  5. IAR和Keil文件包含路径设置

    在模块化编程时,为一个模块单独设置头文件是必不可少的. 在两款主流编译器中,在引用模块函数时候,包含头文件路径是必须的,那么设置文件路径的准确性就显得尤为重要. 否则,编译器会报错,无法打开某某头文件 ...

  6. redis3--key的操作

    我们之前使用Redis简单存储了三个参数:在语句set name jack中,其中name就是一个key.我们Java中的变量名是有一定规则的,比如组成内容可以是"数字",&quo ...

  7. 在线协作沟通工具DesignBoard帮助设计团队更有效地进行沟通与版本管理

    设计稿呈现缺乏整体性.远程沟通效率低.多版本管理混乱,这可能是很多创业团队都面临的问题,并且这些问题都将直接影响到产品开发进度.国内创业团队彩程设计也曾面临同样的问题,后来他们在做某个新项目时尝试把设 ...

  8. ACboy needs your help again!

    ACboy needs your help again! Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Ja ...

  9. CTRL key

    ctrl key其实是用于扩展键盘,单独一个ctrl键没有什么作用,也没有ascii码,当与其他键相结合时,相当于创造出一个新键.例如:用getchar()侦测输入的字符,当按下ctrl+a时,只输出 ...

  10. NSArray的排序问题

    1.关于NSArray的排序问题,首先想到的是不是冒泡排序,插入排序....... oc中的NSArray有一种更简单的方式: 例如: NSArray *stringArray=[NSArray ar ...