【发布时间】:2011-03-24 22:54:11
【问题描述】:
//list.h file
typedef struct _lnode{
struct _lnode *next;
unsigned short row;
unsigned short column;
short data;
}lnode;
typedef struct _llist{
struct _lnode *head;
unsigned int size;
}llist;
//list.c file
void add(llist *list, lnode *newNode){
list->size++;
addRecursion(&list->head, newNode);
}
lnode* addRecursion(lnode **node, lnode *newNode){
if(*node == NULL){
*node = newNode;
}
else{
lnode *nextNode = *node->next;
*node->next = addRecursion(&nextNode, newNode);
}
return node;
}
//main function
llist list;
list.head = NULL;
lnode* new_node;
new_node = make_node(1,1,2);
add(&list, new_node);
printList(list.head);
我认为我在 addRecursion 函数中存在问题,尤其是在“else”语句中。 自从我开始使用双指针以来,我感到很困惑... 我该如何解决这个问题?
【问题讨论】:
-
如果您要解释 (1) 您希望您的代码做什么,(2) 它实际上做了什么,以及 (3) 为什么您对 #2 不满意(如果这不是很明显)。
-
首先列表没有初始化为 NULL,并且在 addRecursion 中执行 *node == NULL。
-
另外:如果这是家庭作业,你应该这么说。 (如果它看起来像家庭作业,而你不说是不是,有些人会因为害怕为你做作业而避免回答。)
-
不,它不是硬件。我通常使用基于 java 或 c# 参考的语言。我只是想为以后的工作面试练习自己..
-
我希望递归地将一个新节点插入到链表中......并且 addRecursion 函数现在不起作用......
标签: c recursion linked-list