【发布时间】: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