1)链表:链表是java中数据结构之一,在内存中是一块不连续的内存空间,彼此之间的数据连接关系是一个对象持有下一个对象的引用。链表的插入方式可简单分为从链表头部插入和从尾部插入,其中从头部插入较为简单。下面分别通过代码实现:
2)从头部插入代码:
package com.zt.link; import java.util.NoSuchElementException; public class LinkTest { private Node first;//链表头元素 private int size;//链表大小 public static void main(String[] args) { LinkTest link = new LinkTest(); link.addFirst("结点1"); link.addFirst("结点2"); link.addFirst("结点3"); System.out.println(link.size); link.deleteFirst(); link.display(); } //在链表头部添加结点 public boolean addFirst(Object value){ Node newNode = new Node(value, null); if(first == null)//判断是否为第一个结点,若是直接把新节点赋值给第一个结点 first = newNode; else { newNode.next = first;//若不是第一个结点,新节点作为第一个结点 first = newNode; } size ++; return true; } //在链表头部删除结点 public Node deleteFirst() { if(first == null) throw new NoSuchElementException(); Node temp = first; first = first.next; size --; return temp; } //获取指定位置的元素 public Node get(int index) { if(index < 0 ||index > size) throw new IllegalArgumentException(); Node cur = first; int count = 0; while(cur != null) { if(count ++ == index) return cur; else { cur = cur.next; } } return null; } //遍历链表 public void display() { Node cur = first; while(cur != null){ System.out.println(cur.value); cur = cur.next; } } } class Node { Object value;//为了方便取值,没有加权限修饰符 Node next; public Node(Object value,Node next) { this.value = value; this.next = next; } }
从尾部插入代码,为了插入方便多添加一个last结点:
package com.zt.link; import java.util.NoSuchElementException; public class LinkTest { private Node first;//链表头元素 private Node last;//链表尾元素 private int size;//链表大小 public static void main(String[] args) { LinkTest link = new LinkTest(); link.addLast("结点1"); link.addLast("结点2"); link.addLast("结点3"); link.deleteLast(); System.out.println(link.get(1).value); link.display(); } //在链表尾部添加结点 public boolean addLast(Object value) { Node newNode = new Node(value, null); if(first == null)//判断是否为第一个结点,若是第一个结点和尾结点指向新结点 first = last = newNode; else { last.next = newNode; last = newNode; } size ++; return true; } //移除尾元素 public Node deleteLast() { if(first == null)//判断链表是否为空 throw new NoSuchElementException(); Node cur = first;//cur表示当前遍历结点 Node prev = null;//prev当前结点的上一个结点 while(cur != null) { if(cur == last) { Node temp = last; last = prev; last.next = null; size --; return temp; } else { prev = cur; cur = cur.next; } } return null; } //获取指定位置的元素,和从头部插入一样 public Node get(int index) { if(index < 0 ||index > size) throw new IllegalArgumentException(); Node cur = first; int count = 0; while(cur != null) { if(count ++ == index) return cur; else { cur = cur.next; } } return null; } //遍历链表,和从头部插入一样 public void display() { Node cur = first; while(cur != null){ System.out.println(cur.value); cur = cur.next; } } } class Node { Object value;//为了方便取值,没有加权限修饰符 Node next; public Node(Object value,Node next) { this.value = value; this.next = next; } }
相关推荐
java实现的动态链表!很简单的东西,没有完全的链表功能
java 实现的链表简单的丢手绢游戏,可以研究一下链表的机制,还算一般复杂
初学java ,这是模仿的java数据结构中用链表实现图书馆管理的小程序,很简单,可供初学者参考使用
Java数组+链表简单实现HashMap的put和get 数组和链表.pdf
Java用数组和链表的方式简单实现HashMap的增删改功能 数组和链表.pdf
相信大家都明白 LinkedList 是基于双向链表而实现的,本篇文章主要讲解一下双向链表的实现,并且我们参考 LinkedList 自己实现一个单链表尝试一下。 什么是链表? 简单的来讲一下什么是链表:首先链表是一种线性的...
使用链表实现简单的学生信息录入系统,实例开发,链表运用
本代码为链表的Java实现,使用了简单的实现了内部类,接口,难度系数不高,交互上有改进
这是我们学校的一个课程设计题,我是用链表实现的,并且测试类也写得较简单。如果有什么不对的地方,请多指教。
这是一个简单的java程序,用于实现对输入字符的逆序输出。初学者可以参考。
这个循环链表是基于引用的,现实的算法比较简单,但是可以作为参考之用。
最简单的实现通讯录,供参考学习扩展,本人也是初学望交流
主要介绍了Java数据结构之简单链表的定义与实现方法,简单描述了链接的概念、原理,并结合实例形式分析了java定义与使用链表的相关步骤与操作技巧,需要的朋友可以参考下
主要介绍了Java实现双链表互相交换任意两个节点的方法,简单讲述了双链表的概念,并结合实例形式给出了java双链表实现任意两个节点交换的操作技巧,需要的朋友可以参考下
实现了一个简单的java版本的单链表,链表反转和链表是否相交如果相交求相交节点。关于链表是否相交是一次阿里的面试的在线试题,挂的很彻底。然后就在网上找了几个实现思路自己用java做了一个简单的实现....
# 单链表 Java 中单向链表的简单实现。
这是自己写的一个Java实现模拟数据结构中的LinkedList。实现其简单的添加节点功能
这里的LRUCache类维护了一个双向链表和一个哈希表,用于实现LRU算法。具体实现细节如下: - get方法:首先在哈希表中查找对应的键值对,如果不存在,则返回-1;如果存在,则将对应的节点从双向链表中删除,并将其...
基于JAVA创建单链表,并实现了在队列末尾增加、删除元素,在队列中插入、删除元素,打印链表。
本文先介绍线性表的几个基本组成部分:数组、单向链表、双向链表;随后给出双向链表的C、C++和Java三种语言的实现,需要的朋友可以参考下