不了解链表实现,请帮忙.C++

Not understanding Linked List implementation please help.C++

本文关键字:C++ 链表 实现 不了解      更新时间:2023-10-16

你能向我解释一下我用"/"标记的行吗?这对我来说意味着整个世界!

void createnode(int value)
node *temp=new node;//
temp->data=value;//
temp->next=NULL;//

下面从OP的评论中添加的代码:

void nodecreate(int value)
{
node *temp=new node;// 
temp->data=value;/// 
temp->next=NULL;/// 
if(head==NULL) 
{ 
head=temp; 
tail=temp; 
temp=NULL; 
} 
else 
{ 
tail->next=temp; 
tail=temp; 
} 
}

根据我的经验,即使是长期程序员似乎也没有真正掌握链表,并且大多数人都试图避免进入它,因为它们是标准库的一部分,并且 - 有些人需要一个完整的链表示例来理解你的问题,这一事实可能反映了这一点。

我花了 17 本书和一些 youtube 视频才真正了解发生了什么——16 本解释得相似,最后一本书有不同的方法,最重要的是它真的很简单,真的值得深入研究。

直奔主题:

void createnode(int value) //Function for adding a new node to the list
node *temp=new node;//Standard code dynamically allocating a new address stored in "temp" to a new struct "node"
temp->data=value;//This writes the new value passed over to the function in the new created struct
temp->next=NULL;//This writes "NULL" in the "next" variable of the new created struct to mark it as the last node when you search through the whole linked list.

(从 cpp11 开始,出于多种原因,您应该使用 nullptr 而不是 NULL。

如果您真的想掌握这个主题,我建议您通过"从亚历克斯·阿兰跳转到C++",因为对我来说这是第 17 本书,指针有 6 章。他还声称,大约 40% 的 c++ 项目需要自行创建的映射和链表,其中 std lib 不能或不应该使用,原因有几个。(他在哈佛大学教授 c++ 入门课程,如果有人追求"狗牌/证书"(。

真正帮助我理解链表的是以下内容:

  • 寻找表示代码数据的新方法 (a(
  • 以小块的方式完成程序 - 切碎代码 (b(

我想出的一个非常规的视觉示例(a(也帮助我理解搜索和排序算法,将一些代表变量的"派对饮料塑料杯"和一些代表通过它的数据的"post it's"。 然后我浏览了代码,在塑料杯上放了一个带有"post it"的变量名称,将数据(整数、字符、字符串等(放在不同颜色的"post it's"上,然后按照代码说从一个杯子放到另一个杯子。(也许是一个有趣的新年书派对游戏,用不同的利口酒而不是发布它的;)(

另一个是更常见的,只是写堆栈和数据,如此处所述。

(b(应该是自我解释的 - 不要试图一次掌握整个链表。一个接一个地选择模块 - 越小越好。含义:首先创建逻辑块,如"创建新节点"读取节点"删除节点",而不是较小的逻辑块,如"空列表中的第一个节点"第二个节点"等。