【发布时间】:2020-03-09 13:11:43
【问题描述】:
void insertbeg(n*head)
{
n *x,*q=head;
q=(n*)malloc(sizeof(n));
printf("Enter the data to be entered: ");
scanf("%d",&q->data);
q->link=NULL;
if(head==NULL)
{
head=q;
}
else
{
q->link=head;
head=q;
}
x=head;
while(x!=NULL)
{
printf("%d\t",x->data);
x=x->link;
}
printf("\n");
}
此代码按预期运行,这是函数,驱动程序接收实际列表并在完成后调用此函数。最后它打印输出,并在开头输入用户输入的元素,一切都很好,直到这里。我有一系列开关案例,其中每个案例在开头调用插入元素、从结尾删除等函数,但是当我在从结尾删除等任何操作后说出任何其他选项时,它会删除最后一个元素并打印在实际操作而不是在修改后的列表上操作后的结果,例如: 1 2 3 4 是实际列表 我选择在开头插入一个元素。 在我插入说 7 后,它会打印 7 1 2 3 4。 之后我选择从末尾删除一个元素。 它打印 1 2 3。 ** 而是应该打印 7 1 2 3 ** 每次执行操作时都会发生这种情况,操作是在实际列表上而不是在修改后的列表上并打印结果。
【问题讨论】:
-
n *head而不是n*head可能是错字? -
@Gaming DEITY 请勿提供图片参考。在您的问题中提供了相关代码。否则你的问题将被否决。
-
糟糕,您给我们展示了一个工作代码,说另一部分代码不起作用,但未能显示有问题的删除代码。作为新用户,您应该(再次)阅读并思考其他人在 [mvce] 中需要什么才能重现问题。在这里,我们需要一个可编译的示例,其中的输入显示问题。
-
@SergeBallesta 显示的函数也是无效的。:)
-
@VladfromMoscow:我必须承认,当他们说 代码按预期运行 并且没有对其进行测试时,我盲目地信任 OP。但是我真的坚持minimal reproducible example,没有它就不会测试。
标签: c linked-list singly-linked-list