我做的一个链表的实现,不知道好不好,大家看一下!
package m2010_09_14;
/**
*节点类
*/
public class Node {
private Node node;// 下一个节点
private Object o; // 节点内容
private String name;// 节点名称
public Node(String name) {
setName(name);
}
public Node getNode() {
return node;
}
public void setNode(Node node) {
this.node = node;
}
public Object getO() {
return o;
}
public void setO(Object o) {
this.o = o;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((node == null) ? 0 : node.hashCode());
result = prime * result + ((o == null) ? 0 : o.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (obj == null)
return false;
Node node = (Node) obj;
if (node.name.equals(name)) {
return true;
}
return false;
}
}
链表类:
package m2010_09_14;
import java.util.*;
/**
*
* @author qmhuang 2010-09-14 链表
*/
public class Link {
private List<Node> nodes = new ArrayList<Node>();
public void addNode(int position, Node node) {
// 判断链表里面是否存在节点
if (nodes.size() == 0) {
nodes.add(node);
return;
}
// 判断插入位置是否超出链表当前最大位置的范围
if (nodes.size() + 1 < position) {
System.out.println("链表不存在该位置!");
return;
}
// 获取当前位置的前一个节点
Node tempNode = nodes.get(position - 1);
node.setNode(tempNode.getNode());
tempNode.setNode(node);
// 将要节点插入要插入的位置
nodes.add(position, node);
System.out.println("在" + position + "中插入了节点" + node);
}
// 删除节点
public void delNode(Node node) {
for (Node node2 : nodes) {
if (node.equals(node2.getNode())) {
node2.setNode(node.getNode());
nodes.remove(node);
return;
}
}
}
public int size() {
return nodes.size();
}
public static void main(String[] args) {
Link link = new Link();
Node node1 = new Node("node1");
link.addNode(0, node1);
Node node2 = new Node("node2");
link.addNode(1, node2);
Node node3 = new Node("node3");
link.addNode(1, node3);
System.out.println("链表中的节点有:");
for (Node node : link.nodes) {
System.out.println(node);
}
System.out.println("各个节点之间的关系:");
for (Node node : link.nodes) {
System.out.println(node + "的下一个节点是:" + node.getNode());
}
link.delNode(node3);
System.out.println("删除后,链表中的节点有:");
for (Node node : link.nodes) {
System.out.println(node);
}
System.out.println("各个节点之间的关系:");
for (Node node : link.nodes) {
System.out.println(node + "的下一个节点是:" + node.getNode());
}
}
}
分享到:
相关推荐
单向链表是一种基本的数据结构,它在计算机科学和编程中有着广泛的应用。与数组不同,链表中的元素不是在内存中连续存储的,而是通过指针或引用连接在一起,形成一个逻辑上的线性序列。单向链表的每个节点包含两部分...
本文将详细讲解如何在C#中实现单向链表,结合源码解析来帮助你深入理解其内部机制。 首先,我们要知道什么是单向链表。单向链表是由一系列节点组成,每个节点包含两个部分:数据域和指针域。数据域存储实际的数据,...
单向链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。在C++编程中,为了实现通用性,我们通常会使用模板类来创建单向链表,以便它可以处理不同类型的元素。标题"单向链表类...
单向链表是一种基本的数据结构,它在计算机科学中被广泛应用,特别是在算法和数据结构的实现中。在Java编程中,单向链表通常通过定义一个节点类来实现,每个节点包含数据和指向下一个节点的引用。下面我们将深入探讨...
1.随机产生或键盘输入一组元素,建立一个带头结点的单向链表(无序)。 2.遍历单向链表。 3.把单向链表中元素逆置(不允许申请新的结点空间)。 4.在单向链表中删除所有的偶数元素结点。 5.编写在非递减...
在本篇数据结构实验报告中,我们关注的核心是单向链表这一数据结构。单向链表是一种线性数据结构,每个节点包含一个数据元素和一个指向下一个节点的指针。实验使用VC++ 6.0作为编程工具,旨在通过实践来深入理解和...
04.单向链表以及单向链表的应用.ppt
这是一个单向链表,它具有插入与删除节点的功能。Entry类实现了链表的各节点。
本文将深入探讨两种重要的线性数据结构——单向链表和双向链表,以及它们在实际编程中的应用。 单向链表是一种线性数据结构,它的每个元素(称为节点)包含两部分:数据域,用于存储实际的数据;指针域,用于存储下...
将一个单向链表反向连接
本资源提供的是针对初学者设计的链表学习材料,包括单向链表和双向链表的实现。下面将详细讲解这两种链表的数据结构及其操作。 1. **单向链表**: 单向链表是一种线性数据结构,每个节点包含两部分:数据域和指针...
单向链表是一种基本的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。链表逆转是计算机科学中常见的操作,它将链表中的元素顺序颠倒,使得原链表的最后一个元素成为新链表的第一个元素,而...
单向链表是一种基本的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。在本文中,我们将深入探讨如何实现单向链表的各种操作,包括建立链表、添加元素、删除元素、翻转链表(包括递归方法)...
在IT领域,数据结构是编程基础中的重要组成部分,而单向链表作为基本的数据结构之一,在许多场景下都有着广泛的应用。本项目以Flash AS3.0为编程语言,实现了一个单向链表的数据结构,这对于理解和应用单向链表概念...
本主题将深入探讨由C语言实现的单向链表(slist.h)和双向链表(blist)。这两种链表各有特点,适用于不同的场景,对于理解和掌握数据结构与算法至关重要。 ### 单向链表(slist.h) 单向链表是一种线性数据结构,...
C 语言版 单向链表 #include #include typedef struct student { int num; struct student *next; }st; st *creat() //创建链表 { st *head , *tail , *p; int num = 0; head = tail = p = NULL; printf...
单向链表作为一种基础的数据结构,其插入、删除、创建和遍历操作是每个程序员必须熟练掌握的技能。本文将详细介绍如何使用C语言实现单向链表结点的逐个删除。 首先,我们要了解单向链表的基本概念。单向链表是由一...
数据结构,c语言实现的单向链表。代码分享 struct LinkNode { int data; struct LinkNode *next; }; typedef struct LinkNode *Lnode;
单向链表是一种基本的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的引用。在计算机科学中,链表常用于构建动态数据结构,因为它们允许高效的插入和删除操作,尤其是在元素的位置未知时。而基...
单向链表是一种基本的数据结构,它在计算机科学和编程中有着广泛的应用。与数组不同,链表中的元素不是在内存中连续存储的,而是通过指针连接起来。每个链表节点包含两部分:数据域,用于存储实际的元素值;指针域,...