【发布时间】:2014-03-01 08:05:55
【问题描述】:
codepad link我正在尝试使用双指针插入链接列表。但我不明白我哪里出错了我跟进堆栈溢出的其他链接,我什至提到了几个书籍,所以请帮助我。我将插入代码保留在位置 1。在输出中,之前的插入丢失了。
struct node
{
int data;
node *next;
};
void insert(node **head,int k,int pos)//k refers to the element to be inserted
{
if(pos==1)
{
node *newnode=(node *)malloc(sizeof(node));
newnode->data=k;
newnode->next=*head;
*head=newnode;
}
}
void print(node **head)
{
printf("the elements are.. ");
while(*head!=NULL)
{
printf("%d ",(*head)->data);
(*head)=(*head)->next;
}
printf("\n");
}
int main()
{
insert(&head,5,1);
print(&head);
insert(&head,4,1);
print(&head);
return 0;
}
抱歉缩进不佳。我是初学者,请帮助我。
【问题讨论】:
-
这不是有效的 C 代码。请通过复制和粘贴的方式发布您正在编译和运行的实际代码。另外,告诉我们它在什么方面不起作用。
-
也许这解释了你在寻找什么:macs.hw.ac.uk/~rjp/Coursewww/Cwww/linklist.html
-
为什么不将其放入 codepad.org 或类似网站?
-
insert函数中的if在这种情况下是多余的。您正在丢弃head的先前值 -
size_t是无符号类型,所以只能使用非负数。如果您使用size_t pos代替int pos并将诸如-842 之类的数字作为位置传递给insert函数,则会显示警告。如果使用size_t时没有得到提示,那将是其他人的错。
标签: c linked-list