【发布时间】:2012-11-28 11:57:14
【问题描述】:
我试图了解它们的工作原理,但我遇到了很多困难。有没有人愿意直观地解释它们,或者提供他们认为对刚开始接触该主题的人有用的资源?
假设我有这个:
struct node
{
int nodeNum;
nodes *next;
}
要创建“头”节点,我将执行以下操作:node *head = new node;,这样我的链接列表现在看起来像 。分配后:
head->nodeNum = 10;
head->next = NULL;
我们有。现在,如果我想写一个插入节点的函数,我可以写:
void insert(node *previousNode, int num)
{
previousNode = new node;
previousNode->nodeNum = num;
previousNode->next = NULL;
}
如果我要这样做,比如说insert(head, 20);,我的新列表看起来像?
如果一切正确,我如何使用此信息从列表中搜索和/或删除节点?例如,如head = head->next; 所述,遍历节点并不是很直观。这是如何工作的?
您可以提供任何使该主题更易于理解的建议都会很棒。感谢大家的帮助!
【问题讨论】:
-
你为什么不拿一个示例代码来玩玩呢?
-
我发现了解数据结构的最佳方法是使用实现,对其执行操作,并在操作后使用调试器查看数据。
-
您的
insert函数实际上并未将新节点链接到列表中。它只是创建一个新节点,当函数退出时,指向该节点的指针将被丢弃。 -
我觉得你的插图真的不是很“列表式”。也许它们在某些技术意义上是有意义的,但是如果您对数据结构的可视化不代表直观的功能,您可能会感到困惑。制作看起来像列表的插图,并开始为您的指针绘制箭头。
-
从房子周围拿一堆东西,收集几根绳子。事物是节点,字符串是指针(箭头)。使用松散的字符串作为变量和参数。然后用它建立你的列表。或者使用乐高,或者铅笔和纸——但远离代码。
标签: c++ linked-list