`

链表简单例子

阅读更多

package test;

import java.util.*;

public class Tiger9 {
static class LinkedList {
private Node header;
private int size;
public LinkedList() {
header = new Node(null, null);
size = 0;
}
public void add(Object o) {
Node n = new Node(o, header); //关键步骤。创建一个新的Node对象,它的next变量将指向添加它之前的header对象。
header = n; //使新创建的Node对象成为新的header对象。
size++;
}
public Object remove() {
Object o = header.object;
header = header.next;
size--;
return o;
}
public Object get(int index) {
if (index < 0 || index > size) {
throw new ArrayIndexOutOfBoundsException("index = " + index);
}
Node n = header;
for (int i = 0; i < index; i++) {
n = n.next;
}
return n.object;
}
public Object[] toArray() {
Object[] os = new Object[size];
int i = 0;
for (Node n = header; n.next != null; n = n.next) {
os[i++] = n.object;
}
return os;
}
public int size() {
return size;
}
public String toString() {
return Arrays.toString(toArray());
}
private class Node {
Object object;
Node next;
public Node(Object object, Node next) {
this.object = object;
this.next = next;
}
}
}
public static void main(String[] args) {
LinkedList list = new LinkedList();
list.add("aaaa");
list.add("bbbb");
list.add("cccc");
list.add("dddd");
System.out.println(list + " " + list.size());
for (int i = 0; i < list.size(); i++) {
System.out.println("i=" + i + ", object=" + list.get(i));
}
for (int i = 0; i < 4; i++) {
System.out.println("remove:" + list.remove() + ", " + list);
}
}
}

结果:

[dddd, cccc, bbbb, aaaa] 4
i=0, object=dddd
i=1, object=cccc
i=2, object=bbbb
i=3, object=aaaa
remove:dddd, [cccc, bbbb, aaaa]
remove:cccc, [bbbb, aaaa]
remove:bbbb, [aaaa]
remove:aaaa, []

结论:

一、对于链表来说,添加和删除元素是非常容易的。相比而言,在线性表中每添加或删除一个元素,就得创建一个新size的数组,并将原有元素拷贝到新数组中来。

二、另一方面,在线性表中,由于使用数组作为存取元素的仓库,按索引查找是非常容易实现的。相对而言,在链表中必须经历低效率的频繁遍历才能索引到相应位置的元素。

三、应当根据具体情况分别选用相应的数据结构。比如:

如果只需要快速添加元素并通过遍历方式依次访问元素,并不涉及到索引操作,推荐使用链表。

如果需要频繁地根据索引随机访问元素,则虽然在添加和删除操作上先天不足,但线性表的性能仍会优于链表。

分享到:
评论

相关推荐

    C语言 数据结构双向链表简单实例

    C语言数据结构双向链表简单实例 本文主要介绍了C语言数据结构双向链表简单实例的相关知识点,包括双向链表的基本操作、删除元素、插入元素、判断对称性、排序等。 一、双向链表的基本操作 双向链表是一种数据结构...

    简单明了的链表实例

    本实例将深入探讨链表的基本概念、操作以及如何通过C语言实现一个简单的链表。 链表由一系列节点组成,每个节点包含两个部分:数据域和指针域。数据域存储实际的数据,而指针域则指向下一个节点的地址。在单链表中...

    Linux内核双向链表简单分析

    ### Linux内核双向链表简单分析 #### 链表数据结构简介 链表作为一种基本且重要的数据结构,在操作系统及各种软件系统中扮演着至关重要的角色。尤其在Linux内核中,链表更是广泛应用于内存管理、进程调度、文件...

    Java算法(链表操作实例)

    本文将深入探讨Java中链表的操作实例,旨在帮助开发者更好地理解和运用链表来解决实际问题。 首先,我们需要理解链表的基本概念。链表不同于数组,它不连续存储元素,每个元素(称为节点)包含数据以及指向下一个...

    一个c++链表完整例子

    一个c++链表完整例子,包括了有关于链表的所有基本操作的实现,简单易懂!

    链表入门及实例讲解

    下面我们将深入探讨链表的概念、特点以及如何在C语言中实现一个简单的链表。 首先,数据结构是组织和存储数据的方式,它可以包含数据的静态属性(如变量)和动态行为(如函数)。算法则是解决问题的方法,涉及如何...

    链表 简单 链表 操作

    链表是一种基础且重要的数据结构,它在计算机科学中扮演着关键角色,特别是在处理动态数据集合时。链表与数组不同,它不依赖于...这些代码实例可以帮助你更好地理解链表的工作原理,并为你的编程技能打下坚实的基础。

    c++链表学习实例--图书管理

    在这个"图书管理"实例中,我们可能会使用单链表,因为它的实现相对简单。 链表操作主要包括以下几种: 1. 插入节点:在链表的特定位置插入新的节点。这需要找到插入位置的前一个节点,然后更新其指针指向新节点,...

    c语言链表编程实例

    ### C语言链表编程实例知识点详解 #### 1. 链表基础 链表是由一系列节点组成的集合,每个节点由数据部分和指向下一个节点的指针构成。链表的节点结构体定义如下: ```c typedef struct LNode { int data; // ...

    一个简单的链表

    总的来说,这个简单的链表实例将帮助我们了解链表的基本工作原理,包括节点结构、插入、删除、遍历和查找等操作。熟悉这些基本概念后,我们可以进一步探索更复杂的数据结构,如双向链表、循环链表以及各种链表操作的...

    C语言 数据结构链表的实例(十九种操作)

    C语言数据结构链表的实例(十九种操作) 在计算机科学中,数据结构是指计算机中存储、组织和管理数据的方式。链表是一种基本的数据结构,广泛应用于计算机科学和软件开发中。今天,我们将讨论C语言中的数据结构链表...

    c语言简单的链表详解

    详细解释了链表的基本操作,附有实例代码! +《链表——&gt;小阿豪带你写链表》!!!!进入正文 1.首先,先想好自己要创建的链表格式以及最后的的显示界面!!! 2.主函数尽量放到后面写,前面写功能函数,在调用...

    C# 链表学习例子 , 运行环境 .net 2003 。

    创建一个简单的链表,包含整数并进行遍历: ```csharp using System; using System.Collections.Generic; class Program { static void Main() { LinkedList&lt;int&gt; list = new LinkedList(); list.AddLast(1...

    链表的一个简单用法

    1. **创建链表**:创建一个新的LinkedList实例,初始化为空链表。 ```csharp LinkedList&lt;int&gt; list = new LinkedList(); ``` 2. **添加节点**:在链表的头部或尾部插入新节点。 - 在头部插入: ```csharp list....

    类实现一简单链表 用类的形式以及链表 结点

    通过上述类实现,我们可以创建一个链表实例,然后向链表中添加元素: ```python linked_list = LinkedList() linked_list.insert_at_end(1) linked_list.insert_at_end(2) linked_list.insert_at_end(3) linked_...

    delphi自定义链表实例

    本文将详细讲解如何在Delphi环境中创建一个自定义链表实例,以及其背后的原理和操作。 首先,理解链表的基本概念非常重要。链表不同于数组,它不是一块连续的内存空间,而是由一系列节点组成,每个节点包含数据和...

    linux下双向循环链表实用例子

    在Linux系统中,数据...通过学习提供的`linux下链表简单实用方法`文件,你将能够看到这些操作的实际代码示例,进一步加深理解。记住,实践是最好的老师,尝试编写和调试自己的链表代码,以便更好地掌握这个重要概念。

    C语言循环链表的简单应用

    本文介绍了一个简单的循环链表的应用实例,包括如何在指定位置插入和删除节点。通过具体的代码示例,展示了如何实现这些基本操作,并通过输入验证等手段提高了程序的安全性和稳定性。对于学习C语言和数据结构的初学...

    c++ 文件读取,链表操作例子

    下面是一个简单的链表节点定义和操作的例子: ```cpp #include struct Node { int data; // 节点数据 Node* next; // 指向下一个节点的指针 }; // 创建新节点 Node* createNode(int data) { Node* newNode = ...

Global site tag (gtag.js) - Google Analytics