【发布时间】:2016-08-31 13:47:02
【问题描述】:
我有这段代码,它通过它在开始时插入节点。这段代码还包含一个打印链表的函数,如果为空,它会打印 链表为空。
当我运行此代码时,我的输出为 链接列表为空。
struct node {
int data;
node* next;
}* start = NULL;
void append(node* linkedlist, int data)
{
node* new_element = NULL;
new_element = (node*)malloc(sizeof(struct node));
new_element->data = data;
if (linkedlist == NULL) {
linkedlist = new_element;
new_element->next = NULL;
}
else {
new_element->next = (linkedlist)->next;
(linkedlist)->next = new_element;
}
}
int main()
{
append(start, 4);
append(start, 5);
printList(start);
}
更新:
void printList(node* linkedlist)
{
node* ptr = linkedlist;
if (linkedlist == NULL) {
printf("Linked list is empty");
exit(0);
}
else {
while (ptr != NULL) {
cout << ptr->data;
ptr = ptr->next;
}
}
}
我可能做错了什么?我应该改变什么才能让它发挥作用?
【问题讨论】:
-
并且不要使用 C++ 编译器来编译 C。
-
@nobar:
void append(node *linkedlist, int data){行将无法在 C 中编译,因为node不是类型(没有 typedef)。这只是 C 和 C++(的子集)之间的区别之一 -
@KostasRim 我暂时赞成它,我以前做过这种方法,我不知道作为副本传递的值,因此赞成。另外,我会坚持下去多一点看更多答案:)
-
@Downvoter,愿意回答吗?
-
@BOTJr。别担心,这是一个非常常见的错误!
标签: c pointers linked-list singly-linked-list