引用
java单链表的应用 遍历、插入、删除
package UseThread13;
/**
* 单链表的使用
*
* @author Administrator
*
*/
public class Manage {
private java.util.List<Link> list = new java.util.ArrayList<Link>();
private Link next;
private Link root;
// 主函数
public static void main(String args[]) {
Manage sl = new Manage();
int n = 10;
sl.showMessage(n);
}
/**
* 实现链表对象的连接起来,并且遍历整个链表
*
* @param 链表的长度(包括链表头)
*/
public void showMessage(int len) {
int n = 1;
root = new Link();// 链表头
list.add(root);
while (n <= len) {
Link link = new Link();
list.add(link);
// 初始化链表中的数据
link.setDate("我是链表中的第" + n + "个对象");
// 实现链表之间的相互连接
if (n == 1) {
root.setNextLink(link);// 连接链表头
next = link;
} else {
next.setNextLink(link);
next = link;
}
n++;
}
// delOneLink(3);
addLink(2);
// 打印链表对象中的数据
Link lin = root.getNextLink();// 链表头下的第一个链表对象
while (lin != null) {
System.out.println(lin.getDate());// 打印出链表中的数据
lin = lin.getNextLink();
}
addLink(3);
// 打印链表对象中的数据
Link li = root.getNextLink();// 链表头下的第一个链表对象
while (li != null) {
System.out.println(li.getDate());// 打印出链表中的数据
li = li.getNextLink();
}
}
/**
* 删除链表中的某个对象
*
* @param n
* 指定要删除的对象
*/
public void delOneLink(int n) {// n从1开始(指的是链表中的第几个位置,包括表头)
if (n == 1) {
root.setNextLink(list.get(n + 1));
list.remove(n);// 删链表头后的第一个
} else if (n == list.size() - 1) {
list.remove(n);// 删除最后的一个
} else {
Link one = list.get(n - 1);
Link two = list.get(n + 1);
one.setNextLink(two);
list.remove(n);
}
}
/**
* 在指定的位置插入某个链表对象
*
* @param n
* 插入的位置
*/
public void addLink(int n) {// n从1开始(指的是链表中的第几个位置),以插在指定位置的前面为准
if (n > list.size()) {
System.out.println("指定位置超过范围了!");
} else {
if (n == 1) {// 在第一个位置的前面插入
Link link = new Link();
link.setDate("我是在第" + n + "位插入的链表对象");
if (list.size() == 1) {
root.setNextLink(link);
} else {
root.setNextLink(link);
link.setNextLink(list.get(n));
}
// 重新整理这个队列
java.util.List<Link> newlist = new java.util.ArrayList<Link>();
newlist.add(root);
newlist.add(link);
for (int i = 2; i < list.size(); i++) {
newlist.add(list.get(i));
}
for (int j = 0; j < list.size(); j++) {
list.remove(0);
}
list = newlist;
} else {
Link link = new Link();
link.setDate("我是在第" + n + "位插入的链表对象");
list.get(n - 1).setNextLink(link);
link.setNextLink(list.get(n));
// 重新整理这个队列
java.util.List<Link> newlist = new java.util.ArrayList<Link>();
for (int i = 0; i < n; i++) {
newlist.add(list.get(i));
}
newlist.add(link);
for (int j = n; j < list.size(); j++) {
newlist.add(list.get(j));
}
list = newlist;
}
}
}
}
package UseThread13;
/**
* 每一个链节点都是一个链表对象
*
* @author Administrator
*
*/
public class Link {
private Link next;// 下一个链表对象
private Object date;// 链表对象里放的数据
/**
* 设定下一个链表对象
*
* @param next
* 要设的下一个链表对象
*/
public void setNextLink(Link next) {
this.next = next;
}
/**
* 得到下一个链表对象
*
* @return 要得到的链表对象
*/
public Link getNextLink() {
return next;
}
/**
* 给链表对象放入一定的数据
* @param date 链表对象中要放入的数据
*/
public void setDate(Object date) {
this.date = date;
}
/**
* 得到链表对象中的数据
* @return 要得到的数据
*/
public Object getDate(){
return date;
}
}
分享到:
相关推荐
本文以“我的Java单链表练习”为主题,通过博主baby69yy2000在iteye上的博客分享,深入探讨了Java中实现单链表的相关知识。 首先,我们要理解单链表的概念。单链表是一种线性数据结构,由一系列节点(也称为元素或...
本话题主要探讨两种常用的数据结构——单链表和双向链表在Java中的实现,以及相关的操作,如在头部添加节点、在尾部添加节点、遍历、逆置和删除。 首先,我们来理解单链表和双向链表的基本概念。单链表是一种线性...
本文将深入探讨单链表的创建、插入和删除等基本操作,旨在为初学者提供一个清晰的理解和实践指导。 首先,我们来了解什么是单链表。单链表是由一系列节点组成的数据结构,每个节点包含两个部分:数据域,用于存储...
本教程将深入探讨如何使用Java语言来实现单链表及其相关操作。 首先,我们来理解单链表的基本概念。单链表由一系列节点组成,每个节点包含两部分:数据域(用于存储数据)和指针域(指向下一个节点)。链表的最后一...
在这个主题中,我们将深入探讨如何使用Java来实现单链表,特别是关注如何插入元素以及如何构建链表。 单链表由一系列节点组成,每个节点包含两部分:数据元素和指向下一个节点的引用。在Java中,我们可以通过创建一...
这个数据结构在处理动态数据集合时非常有用,因为它允许快速插入和删除操作。下面我们将详细探讨如何在Java中实现单链表的增、删、改、查功能,以及如何进行选择排序、冒泡排序和反转排序。 1. **单链表的定义**: ...
在Java中,我们可以使用对象和引用的概念来实现单链表。 首先,我们需要创建一个表示链表节点的类Node,它通常有两个属性:data(用于存储数据)和next(用于存储指向下一个节点的引用)。例如: ```java public ...
本资料主要涵盖了Java单链表的基本操作,包括链表的定义、创建、插入、删除、遍历等核心概念。 单链表由一系列节点组成,每个节点包含两部分:数据元素(data)和指向下一个节点的引用(next)。链表的头部是第一个...
本实验报告详细介绍了如何在单链表中进行插入和删除操作,这对于理解和掌握数据结构的动态管理至关重要。 ### 单链表的插入操作 #### 插入操作的原理 在单链表中插入一个新节点通常涉及以下步骤: 1. **定位插入...
这个“java单链表—修订版”主题涵盖了一些基本的链表操作,包括创建链表、删除最后一个元素、删除指定元素、清空链表以及判断链表是否为空。以下是对这些操作的详细解释: 1. **建立单链表**:创建链表通常从头...
使用C++、Java或Python等面向对象语言实现单链表节点插入,需要定义节点类(包括数据域和指针域),然后实现插入方法,根据插入位置调用相应的插入函数。 通过学习和实践单链表节点的插入操作,可以加深对数据结构...
在这个"java单链表的基本操作 单链表练习题.zip"压缩包中,我们可以预见到包含了一个名为"linked-list-master"的项目,它很可能是为了帮助学习者通过实践来理解和掌握单链表的各种操作。下面,我们将深入探讨单链表...
总结来说,Java中的单链表是一种灵活的数据结构,适合处理动态变化的数据集合,尤其在插入和删除操作频繁的情况下。然而,由于其线性查找特性,对于需要快速访问特定位置的场景,其他数据结构如数组或哈希表可能更为...
单链表是计算机科学中一种基础且重要的数据结构,它在很多实际问题中都有广泛的应用。这个课程设计可能涵盖了单链表的理论基础、实现方式以及各种操作,旨在帮助学习者深入理解数据结构并提高编程能力。下面我们将...
在这个"Java算法实例-单链表操作"中,我们将探讨如何在Java中实现单链表,包括其基本操作如插入、删除、遍历等。这些操作对于理解和解决各种算法问题至关重要,尤其对于学习和准备编程考试的学员来说,是非常实用的...
【Java泛型单链表】是一种使用Java编程语言实现的数据结构,主要涉及到链表的创建、插入、删除等基本操作。在Java中,泛型允许我们编写可重用的代码,适用于多种数据类型,而无需进行重复的类型转换。在这个实现中,...
在Java编程中,学生单链表是一种常见的数据结构,用于存储和操作一系列按特定顺序排列的学生数据。这个压缩包中的`studentlinklist.java`文件很可能包含了实现学生单链表的类,以及相关的操作方法。下面将详细介绍...
循环单链表是一种常见的数据结构,它在计算机科学和编程中有着广泛的应用。与普通单链表不同,循环单链表的最后一个元素指向第一个元素,形成一个闭环,使得链表的遍历可以无止境地进行。在Java中实现循环单链表,...
4. 程序执行的命令包括定义有序顺序表、建立有序顺序表、遍历有序顺序表、在有序顺序表中插入元素、在有序顺序表中删除元素、两个有序顺序表的合并、结束整个程序的操作。 二、概要设计 为了实现上述程序功能,应...