`
freizl
  • 浏览: 3913 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Linked-List 的数组实现

阅读更多
疑问出自 <Introduction to Algorithms, 2nd Edition>
        10.3 Implementing pointers and objects




如上图是linkedlist  9 -> 16 -> 4 -> 1 的数组形式实现
疑问:
为何需要长度为8的数组, key 确只有4个。
每个对象 (垂直的3元数组) 是怎么确定其在数组L中的位子,
阴影部分是干嘛的?

谢谢
  • 大小: 13.9 KB
分享到:
评论
2 楼 freizl 2012-11-25  
Heart.X.Raid 写道
这是一种静态链表结构,链表中的每个结点都存放在一片连续的内存空间里(数组中)。

C的数组是不能动态生成的,必须在编译阶段就指定连续空间的大小。因此往往一开始就开辟一个足够大的空间来存放,如果空间不够再重新开辟。

数组长度8,只有4个key说明还可以加入新的链表结点,阴影部分用来存放以后再加入的新结点。这不是什么问题,你的数据结构还要好好的学学。


厉害厉害。多谢指点。
1 楼 Heart.X.Raid 2010-05-10  
这是一种静态链表结构,链表中的每个结点都存放在一片连续的内存空间里(数组中)。

C的数组是不能动态生成的,必须在编译阶段就指定连续空间的大小。因此往往一开始就开辟一个足够大的空间来存放,如果空间不够再重新开辟。

数组长度8,只有4个key说明还可以加入新的链表结点,阴影部分用来存放以后再加入的新结点。这不是什么问题,你的数据结构还要好好的学学。

相关推荐

    前端开源库-nodejs-linked-list

    而“前端开源库-nodejs-linked-list”这个项目则聚焦于在Node.js环境中实现链表数据结构。链表是一种基础的数据结构,它在计算机科学中扮演着重要角色,特别是在处理动态数据集合时。 链表不同于数组,数组中元素在...

    Linked-list-clean-up-function.rar_UP

    文件"Linked list clean-up function.s"可能是一个源代码文件,其中包含了实现这个功能的具体代码。为了更好地理解这个功能,我们通常需要查看代码,了解它的具体实现方式,包括使用的数据结构、算法效率以及任何...

    linked-list:将数组变成无状态链表

    在给定的标题"linked-list:将数组变成无状态链表"中,我们看到的重点是将数组转换为无状态的链表。"无状态"通常意味着该链表不保存任何额外的信息或历史记录,每个节点只包含它自己的数据和指向下一个节点的引用。这...

    算法面试通关40讲完整课件 05-07 数组、链表

    2. 链表环检测(Linked List Cycle, 如LeetCode的第141题):判断链表中是否存在环,并找出环的起点。 3. 两两交换链表中的节点(Swap Nodes in Pairs, 如LeetCode的第142题):将链表中相邻的节点两两交换。 4. ...

    Queue-using-linked-list.zip_queue java

    本压缩包文件“Queue-using-linked-list.zip_queue java”显然是关于如何使用链表实现Java中的队列。下面将详细阐述这个主题。 ### 链表和队列的概念 **链表** 是一种线性数据结构,它的元素(节点)在内存中不是...

    单链表(Linked-List)

    这种数据结构与数组不同,因为它不连续存储数据,而是通过链接来组织元素。 ### 1. 链表的概念 链表是一种线性数据结构,其中的元素在内存中不是顺序存储的,而是通过指针连接。单链表只有一个方向的指针,即每个...

    A-linked-list-and-an-array-.rar_栈

    在"A linked list and an array .cpp"这个文件中,应该包含了使用C++语言实现链表和数组栈的具体代码。通过阅读和分析这段代码,我们可以深入理解这两种数据结构的栈实现细节,包括如何定义节点、如何管理指针(对于...

    node-linked-list

    本文将围绕“node-linked-list”这一主题,深入探讨JavaScript中的链表实现及其相关知识点。 一、链表的定义与类型 链表是一种线性数据结构,由一系列节点(也称为元素)组成,每个节点包含数据和指向下一个节点的...

    基于python的Linked-List-Basic-List.md

    相比于数组,链表在插入和删除操作上具有更高的效率。 #### 设计链表(题号:0707) **题目描述**:实现一个 MyLinkedList 类来模拟单链表的行为,该类支持以下功能: - `get(index)`:获取链表中第 index 个节点的...

    python 教程 leetcode 代码模板-Linked-List-Two-Pointers.md

    ### Python 教程 LeetCode 代码模板 - Linked List & Two Pointers #### 一、双指针技术概览 在本教程中,我们将探讨一种在处理链表问题时非常有用的技巧——双指针技术。双指针技术的核心在于利用两个指针来遍历...

    Linked-List Implementation of Disjoint Set

    **联合查找示数据结构:链表实现** 在计算机科学中,**离散集合(Disjoint Set)** 是一种用于管理元素分组的数据结构。它支持两种主要操作:`union` 和 `find`。`union` 操作用于合并两个集合,而 `find` 操作用于...

    Merge-linked-list.zip_linked list A B C

    链表不同于数组,它的元素不是在内存中连续存储的,而是通过节点间的指针连接起来,这使得链表的操作具有其独特性。 首先,我们需要理解链表的基本概念。链表由一系列节点组成,每个节点包含数据部分和指针部分,...

    基于python的.Linked-List-Basic.md

    **双向链表(DoublyLinkedList)** 是一种特殊类型的链表,每个节点有两个指针,一个指向前一个节点,另一个指向后一个节点。这种结构使得双向链表可以在两个方向上进行遍历。 - **特点**: - 能够方便地访问当前...

    Quick-sort-doubly-linked-list.zip_Quick

    在`Quick sort doubly linked list.c`文件中,可能包含了以下关键代码部分: 1. 定义双向链表节点结构: ```c struct Node { int data; struct Node* prev; struct Node* next; }; ``` 2. 快速排序函数的...

    Linked-list-version-of--system.rar_管理系统 链表

    "Linked list version of system.c" 文件很可能是系统的核心代码,其中包含了链表的定义、节点结构、以及增删改查的具体实现。在C语言中,链表的创建、插入、删除和查找通常涉及指针操作和内存管理。例如,`struct ...

    基于python的Linked-List-Sort.md

    def sortList(self, head: Optional[ListNode]) -&gt; Optional[ListNode]: return self.bubbleSort(head) ``` ##### 3.3 链表冒泡排序算法复杂度分析 - **时间复杂度**:最坏情况下为 $O(n^2)$,其中 $n$ 是链表的...

    linked-list-js

    在这个"linked-list-js"项目中,我们看到一个用JavaScript实现的单链表。单链表是一种线性数据结构,其中每个元素(节点)包含数据以及指向下一个元素的引用。与数组不同,链表不需要在内存中连续存储,这使得插入和...

    Linked-List-Problem

    "Linked-List-Problem"这个主题通常涉及到与链表相关的编程问题和解决方案。链表不同于数组,它不连续存储数据,而是通过节点之间的引用连接。每个节点包含数据和指向下一个节点的指针。 链表的主要类型包括单向...

    simple-linked-list-c

    简单链表-C("simple-linked-list-c")项目是为了解释和实现如何在 C 语言中创建一个基本的单向链表。下面我们将深入探讨链表的概念、它的操作以及该项目的具体实现。 链表不同于数组,它不连续存储元素,而是通过...

Global site tag (gtag.js) - Google Analytics