繁体   English   中英

请有人帮我解释一下链表吗?

[英]please can some one help me explain linked list?

我已经花了很多时间来学习链表,但是我的所有工作都浪费了,请提供一个自己的代码可以帮助我理解链表吗?

链表只是元素(通常称为节点)的列表,其中每个节点都有对下一个节点的引用(或C语言中的指针):

http://img837.imageshack.us/img837/5613/ll1s.png

通过使指针指向第一个节点(“头”)并使最后一个节点指向null来跟踪列表

替代文字

每个元素都指向下一个节点和上一个节点的链接列表称为双重链接列表。

替代文字

通过遵循这些参考,您可以遍历列表并获取任何节点。

链表相对于数组的一个共同优点是,您可以在O(1)(恒定)时间内插入和删除元素。 缺点是您具有O(N)个随机访问权限。

有关更多信息,请参见Wikipedia

您玩过其中一些拉力赛吗? 组织者在整个城市中留下了此提示,您必须先获得一个提示,然后解决谜题以获取下一个提示的位置。 现在,想象每一个提示都会带来一点奖励。

好吧,链接列表是这样的:每个元素上都有“内容”以及用于获取下一个项目的内存地址(提示)。 当然,下一项有另一个奖项和另一个提示。

链接列表是一系列对象,每个对象都指向列表中的下一个对象。 列表中的最后一个元素的next指针为NULL

您可以在程序中跟踪列表的开头,因此可以从头开始遍历列表。

您可能想要跟踪列表中的当前位置,但这取决于您的应用程序。

双链列表还具有一个先前的元素指针,使您可以双向浏览该列表。

这个:

typedef struct tagProp
{
   rtPropertyKey   key;
   rtProperty      property;
   struct tagProp *next;
} TProperty;

定义属性键/值查找列表。

链接列表被实现为“节点”列表。 使用指针将节点链接在一起。 以下代码描述了一个节点。 指向下一个节点的指针称为next。 在我的示例中,每个节点都包含一个整数值作为其数据。


struct node {
   int val;
   struct node * next;
};

有趣的是如何实际创建列表。 您必须使用malloc创建新节点。 当您分配新节点时,必须使用下一个指针将其绑定到列表中。

如果您明确告诉我们您的问题是什么,我们可以为您提供更多帮助...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM