`
xiangxuehai_jiaer
  • 浏览: 91853 次
  • 性别: Icon_minigender_2
  • 来自: 西安
社区版块
存档分类
最新评论

JAVA实现单链表

 
阅读更多
(1)节点类
public class Node {

	private Object data;// 数据区
	private Node next; // 节点区

	// 构造方法
	public Node(Object data, Node next) {
		this.data = data;
		this.next = next;
	}

	public Object getData() {
		return data;
	}

	public void setData(Object data) {
		this.data = data;
	}

	public Node getNext() {
		return next;
	}

	public void setNext(Node next) {
		this.next = next;
	}

}

(2)链表类
public class LinkedList {

	private Node head; // 头结点

	private int length; // 长度

	// 构造方法
	public LinkedList() {
		head = new Node(null, null);
		length = 0;
	}

	// 头插法(顺序相反)
	public void addHead(Object item) {

		Node node = new Node(item, null);

		node.setNext(head.getNext());

		head.setNext(node);

		length++;
	}

	// 尾插法
	public void addTail(Object item) {

		Node node = new Node(item, null);
		Node temp = head;

		// 找到尾节点
		while (null != temp.getNext()) {
			temp = temp.getNext();
		}

		temp.setNext(node);

		length++;
	}

	// 在指定位置添加节点
	public void addIndex(Object item, int index) {

		Node node = new Node(item, null);
		Node temp = head;

		// 找到要插入节点的前一个节点
		for (int i = 0; i < index - 1; i++) {
			temp = temp.getNext();
		}

		node.setNext(temp.getNext());

		temp.setNext(node);

		length++;

	}

	// 查找指定位置的节点
	public void find(int index) {

		if (index < 1 | index > length) {
			System.out.println("位置非法!");
		}

		Node temp = head;

		for (int i = 0; i < index; i++) {
			temp = temp.getNext();
		}

		System.out.println("链表中第" + index + "节点的值是:" + temp.getData());
	}

	// 删除
	public void delete(int index) {

		if (index < 1 | index > 5) {
			System.out.println("位置非法!");
		}

		Node temp = head;

		// 找到要删除节点的前一个节点
		for (int i = 0; i < index - 1; i++) {
			temp = temp.getNext();
		}

		length--;

		temp.setNext(temp.getNext().getNext());
	}

	// 打印链表
	public void prtn() {

		Node temp = head.getNext(); // 指向第一个元素节点

		while (null != temp) {
			System.out.print(temp.getData() + " ");

			temp = temp.getNext();
		}

		System.out.println("长度为" + length);
	}

	public static void main(String[] args) {

		// 测试
		LinkedList list = new LinkedList();

		list.addHead(1);
		list.addHead(2);
		list.addHead(3);
		list.addHead(4);

		System.out.print("采用头插法的链表是:");
		list.prtn();
		System.out.println();

		System.out.print("添加一个节点:");
		list.addIndex("hello", 1);
		list.prtn();
		System.out.println();

		System.out.print("查找节点:");
		list.find(1);
		System.out.println();

		System.out.print("删除添加的节点");
		list.delete(1);
		list.prtn();
		System.out.println();

		// 测试
		LinkedList list2 = new LinkedList();

		list2.addTail(1);
		list2.addTail(2);
		list2.addTail(3);
		list2.addTail(4);

		System.out.print("采用尾插法的链表是:");
		list2.prtn();
		System.out.println();

		System.out.print("添加一个节点:");
		list2.addIndex("hello", 1);
		list2.prtn();
		System.out.println();

		System.out.print("查找节点:");
		list2.find(1);
		System.out.println();

		System.out.print("删除添加的节点");
		list2.delete(1);
		list2.prtn();
	}
}

(3)测试结果
采用头插法的链表是:4 3 2 1 长度为4

添加一个节点:hello 4 3 2 1 长度为5

查找节点:链表中第1节点的值是:hello

删除添加的节点4 3 2 1 长度为4

采用尾插法的链表是:1 2 3 4 长度为4

添加一个节点:hello 1 2 3 4 长度为5

查找节点:链表中第1节点的值是:hello

删除添加的节点1 2 3 4 长度为4
分享到:
评论

相关推荐

    Java实现单链表以及单链表的操作.zip

    以上就是使用Java实现单链表及其实现的各种操作的详细解析。掌握这些基本操作,能帮助我们在处理复杂问题时更加得心应手。在实际编程中,根据具体需求,还可以扩展链表的功能,例如支持双向链表、循环链表等。

    java 实现单链表逆转详解及实例代码

    单链表分段逆转 java 实现单链表逆转详解及实例代码

    Java实现单链表的基本操作

    本文将深入探讨如何使用Java语言实现单链表的基本操作,包括创建链表、插入节点、删除节点以及遍历链表等关键功能。 首先,我们需要理解单链表的概念。单链表是一种线性数据结构,其中每个元素(称为节点)包含两个...

    java实现单链表

    在这个主题中,我们将深入探讨如何使用Java来实现单链表,特别是关注如何插入元素以及如何构建链表。 单链表由一系列节点组成,每个节点包含两部分:数据元素和指向下一个节点的引用。在Java中,我们可以通过创建一...

    java实现单链表.md

    java单链表

    基于JAVA的单链表简单实现

    这些基本操作展示了如何使用Java实现单链表的主要功能。在实际应用中,可能还需要实现其他功能,如反转链表、查找元素、合并两个排序的链表等。通过熟练掌握单链表的实现,可以为理解和操作更复杂的数据结构打下坚实...

    java实现单链表之逆序

    本文将详细介绍如何使用Java实现单链表的逆序。 首先,我们需要定义一个单链表的节点类`Node`,它包含两个属性:`data`用于存储数据,`next`用于指向下一个节点。如以下代码所示: ```java class Node { int data...

    Java单链表增删改查的实现

    以上是Java实现单链表基本操作的详细步骤。通过理解这些基础知识,你可以轻松地扩展链表的功能,实现更复杂的算法和数据结构操作。在实际编程中,了解并熟练掌握这些概念对于提高代码效率和解决实际问题至关重要。

    基于Java实现的单链表基本操作之链表排.zip

    这个项目提供了Java实现单链表基本操作,包括链表排序的具体代码,可以帮助初学者深入理解链表数据结构及其操作。通过实践这些操作,可以提升对数据结构的理解,为更复杂的算法和系统设计打下坚实的基础。

    Java单链表的实现代码

    以上就是使用Java实现单链表的基本操作。`Java单链表的操作代码int型.rar`和`Java单链表的操作代码char型.rar`两个压缩包中可能包含了这些类的源代码示例,供学习者参考和实践。通过这些代码,你可以了解如何在实际...

    java实现单链表增删改查的实例代码详解

    package 数据结构算法.链表; /* *定义节点 * 链表由节点构成 */ public class Node&lt;E&gt; { private E e; //数据data private Node&lt;E&gt; next; //指向下一个节点 public Node() { } public Node(E e) { ...

    Java实现单链表翻转实例代码

    在Java编程中,单链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个值和一个指向下一个节点的引用。单链表的翻转是数据结构与算法中的一个经典问题,通常有两种主要的实现方式:递归和非递归。本篇...

    java实现的单链表及逆序显示

    昨天到笔试,没想到出了这么一个题,用java实现单链表,并把它逆序,输出,我晕了半天,回来才做出来,不知道还有没有用?!

    基于Java实现的单链表基本操作之链表相交.zip

    本篇将深入探讨如何使用Java实现单链表,并特别关注链表相交的检测方法。 首先,我们需要创建一个链表节点类(Node)来存储数据和引用下一个节点: ```java public class Node { int data; Node next; public ...

    Java自己实现一个单链表

    总结来说,Java实现单链表涉及创建节点类,定义链表类以及实现链表的基本操作,如插入、删除和遍历。掌握这些基础知识对于提升Java程序员的数据结构技能是至关重要的,因为它们是构建复杂数据结构和算法的基石。通过...

    JAVA单链表操作实验

    在本实验中,我们将实现一个基于JAVA的单链表操作实验,该实验可以实现以下三个功能:1.根据从键盘输入一串字符串自动生成一个单链表;2.根据指定元素删除相应的结点,可以一次性删除多个结点;3.根据指定修改相应...

Global site tag (gtag.js) - Google Analytics