【问题标题】:Linked List createList vs initNode functions链表 createList 与 initNode 函数
【发布时间】:2023-03-14 12:23:01
【问题描述】:

我应该创建一个链表,我得到了一个包含函数的头文件:

listNode *initNode(int value);
listNode* createList();

我对 createList 函数应该做什么有点困惑...

在 initNode 中它会像这样:

listNode *someNode;
someNode = malloc(sizeof(listNode));
someNode->next = NULL;
someNode->value = value;
return someNode;

createList 函数应该做什么?我会在我的测试程序中调用它,但我真的不知道如何处理它。

【问题讨论】:

  • 我猜createList 会为你管理链表,但他们也让你可以选择只创建一个节点并自己管理它。不过只是猜测,我不熟悉那个特定的库。
  • 另外,我建议添加标签来指定您使用的语言。我假设 C.
  • 我刚刚查看了我得到的一些其他文件,它说:创建一些节点作为列表的头部,然后将下一个指针设置为 NULL 并返回该节点。那只是: listNode*anyNode; anyNode->next = NULL
  • 您使用的库是从哪里获得的?如果它可以在线获得,我会看看他们的预期用途
  • 这个函数叫做createList。假设它应该创建一个列表是公平的。现在,如果它应该创建一个包含一些数据的列表,那么就不清楚要包含哪些数据。也许它应该创建一个空列表。这似乎是合理的。现在问问自己,你想如何表示一个空列表并创建它。

标签: c arrays list dynamic


【解决方案1】:

如果你想用哑头节点实现 LinkedList,你可以在createList 方法中实现。或者,如果您希望使用另一个 struct 提供有关列表的更多信息,例如

struct LinkedList {
    listnode *header;
    size_t size;
};

您也可以在 createList 方法中进行 malloc 和初始化。

【讨论】:

    【解决方案2】:

    createList 可能会为新的列表结构分配内存,通常会创建一个新的列表头结构,一个“句柄”,您以后可以使用它来操作列表。

    【讨论】:

      猜你喜欢
      • 2016-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-15
      • 2010-09-15
      • 2021-12-07
      • 2011-02-11
      相关资源
      最近更新 更多