【问题标题】:Not understanding Linked List implementation please help.C++不了解链表实现请帮助.C++
【发布时间】:2019-12-31 14:28:29
【问题描述】:

你能解释一下我用'/'标记的那些行吗?这对我来说意味着世界!

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; 
   } 
}

【问题讨论】:

  • 我没有看到任何标有“/”的行
  • 这是一个函数声明,末尾缺少分号。或缺少花括号的函数。然后初始化一个新节点,因为有人不知道构造函数,或者这实际上是 C 而不是 C++。
  • 不要发布整个代码,而是 minimal reproducible example
  • 如果不知道您不了解具体是什么,这是不可能回答的。我认为你会从a good book中受益。
  • 您应该查看您最喜欢的 C++ 参考书中关于指针的部分。

标签: c++ linked-list


【解决方案1】:

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

我花了 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 开始,several reasons 应该使用 nullptr 而不是 NULL。)

如果您真的想掌握该主题,我建议您阅读“从 Alex Alllain 跳转到 C++”,因为这对我来说是第 17 本书,并且指针有 6 章。他还声称,他大约 40% 的 c++ 项目需要自行创建的映射和链表,其中 std 库由于多种原因不能或不应该使用。 (如果有人追求“狗牌/证书”,他正在哈佛教授 c++ 入门课程)

真正帮助我理解链表的是:

  • 找到表示代码数据的新方法 (a)
  • 以小块的形式处理程序 - 切碎代码 (b)

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

另一种更常见的方法是像 here 解释的那样编写堆栈和数据。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    相关资源
    最近更新 更多