【发布时间】:2020-09-11 02:22:22
【问题描述】:
我想用链表做一个队列,但我做不到! 我能知道问题出在哪里吗?因为它让我只插入两个值!
typedef struct list
{
int data;
struct list* next;
}list;
void move_forward(list* head,list* node)
{
if(head==NULL) exit(1);
while(head->next!=NULL)
head=head->next;
head->next=node;
}
list* insert(list* head,int value)
{
list* node=(list*)malloc(sizeof(list));
node->data=value;
node->next=NULL ;
if(head==NULL)
head=node;
move_forward(head,node);
return head;
}
【问题讨论】:
-
你能提供一个minimal verifiable example吗?包括您的测试代码,并提供准确的预期结果和实际结果。对于初学者,在
insert中,您可能需要在head==NULL情况下使用return,而不是继续调用move_forward。 -
是的!有效!!我可以知道为什么我的代码不起作用吗??
-
好吧,
move_forward应该做什么?它将node添加到head列表的末尾。但是在head==NULL的情况下head和node是相同的。所以在这种情况下调用move_forward就是在自身末尾添加一个节点。在这种情况下没有任何意义。 -
哦!我知道了!!你是救命稻草,非常感谢
标签: c algorithm linked-list