【问题标题】:Adding items to an empty linked list C将项目添加到空链表 C
【发布时间】:2015-01-03 12:07:00
【问题描述】:

对于一个项目,我希望在一个函数中创建一个空链表,然后在另一个函数中使用该链表向其中添加项目。目前这是我的空链表代码:

typedef struct node_t {

int value;
int priority;
struct node_t *next;

}node;

typedef struct priorty_linked_list {

struct name *head;

int current_size;
int max_size;


}priority_list;

typedef node *Node;
typedef priority_list *List;

我们的教练给了我们上面的代码,所以应该没有什么问题。接下来我从函数 create 开始:

void create(int max_terms) {


node *head = NULL;
node *next = NULL;
List *current_size = 0;
List *max_size = max_terms;

max_size = (List*)malloc(sizeof(List));

printf("The maximum size for the list is %d",max_terms);


}

我假设下一个函数要求我使用 create 函数的返回函数,但我不确定如何。 add 函数应该将上面创建的队列作为参数,如果我之前由于内存分配而没有创建队列,则不能工作。

任何关于我上述代码的提示或建议将不胜感激!

谢谢:)

【问题讨论】:

  • “我们的教练给了我们上面的代码,所以应该没有什么问题” - 在大多数情况下,这不是真的;)
  • 列表 *max_size = max_terms;这是不对的,List *current_size = 0; 也不对
  • 如果你的导师给了你上面的代码,找一个新的导师。它有一个明显的错误。没有struct name 这样的东西。并且携带超出头指针(长度,可能是尾指针等)的数据的“空链表”通常在其自己的结构(您的priority_list)中完成,其中一个简单地初始化并从一个值返回“创造”功能。 C 支持结构的值返回,我认为动态创建列表数据结构没有任何意义(您已经使用列表 nodes 做了足够多的事情)。 请不要在 typedefs 中隐藏指针类型

标签: c function linked-list return


【解决方案1】:

我猜在priorty_linked_list的定义中,你想写:

struct node *head;

代替:

struct name *head;

This site has a great explanation 和不错的实现,可以参考。 Web 中有成千上万的示例与您必须实现的示例非常相似。不要害怕谷歌它。

【讨论】:

  • 您好,感谢您的回复。我也看过那个网站和无数其他网站。但不幸的是,我所见过的没有一个具有仅用于创建空列表的功能,这是我的问题。
  • 你确定你必须用那个确切的函数签名来实现create()吗?
  • 给我的描述是:创建一个新的优先级队列来存储元素,最大元素数为max_size
  • 看来create() 应该返回priority_list *,而不是void
  • @user3160152 它必须是return max_size;,但请为您的变量选择更好的名称。网络上几千人要求你做的事情没有什么是不做的。通过查看您的代码,我可以看到您完全迷失了方向,问题不在于如何实现链表。 问题是:如何实现返回某物的方法,指针如何工作,如何分配动态内存,将指针作为参数传递给函数,等等……
猜你喜欢
  • 1970-01-01
  • 2019-11-29
  • 2021-12-23
  • 1970-01-01
  • 2020-06-23
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多