Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
链表在C中,随机输出? #包括 结构列表 { int数据; 结构列表*下一步; }; 结构列表*开始,*结束; void add(结构列表*头,结构列表*列表,int数据); 作废删除(结构列表*头,结构列表*尾); 内部主(空) { 开始=结束=空; 添加(开始、结束、空); 添加(开始、结束、空); printf(“第一个元素:%d”); 删除(开始、结束); 返回0; } 空添加(结构列表*头,结构列表*尾,整数数据) { if(tail==NULL) { head=tail=malloc(sizeof(结构列表)); head->data=data;head->next=NULL; }否则{ tail->next=malloc(sizeof(struct list)); tail=tail->next; 尾部->数据=数据; tail->next=NULL; } } 作废删除(结构列表*头,结构列表*尾) { 结构列表*temp; 如果(头=尾) { 自由(头); 头=尾=空; }否则{ 温度=头部->下一步; 自由(头); 压头=温度; } }_C_Linked List - Fatal编程技术网

链表在C中,随机输出? #包括 结构列表 { int数据; 结构列表*下一步; }; 结构列表*开始,*结束; void add(结构列表*头,结构列表*列表,int数据); 作废删除(结构列表*头,结构列表*尾); 内部主(空) { 开始=结束=空; 添加(开始、结束、空); 添加(开始、结束、空); printf(“第一个元素:%d”); 删除(开始、结束); 返回0; } 空添加(结构列表*头,结构列表*尾,整数数据) { if(tail==NULL) { head=tail=malloc(sizeof(结构列表)); head->data=data;head->next=NULL; }否则{ tail->next=malloc(sizeof(struct list)); tail=tail->next; 尾部->数据=数据; tail->next=NULL; } } 作废删除(结构列表*头,结构列表*尾) { 结构列表*temp; 如果(头=尾) { 自由(头); 头=尾=空; }否则{ 温度=头部->下一步; 自由(头); 压头=温度; } }

链表在C中,随机输出? #包括 结构列表 { int数据; 结构列表*下一步; }; 结构列表*开始,*结束; void add(结构列表*头,结构列表*列表,int数据); 作废删除(结构列表*头,结构列表*尾); 内部主(空) { 开始=结束=空; 添加(开始、结束、空); 添加(开始、结束、空); printf(“第一个元素:%d”); 删除(开始、结束); 返回0; } 空添加(结构列表*头,结构列表*尾,整数数据) { if(tail==NULL) { head=tail=malloc(sizeof(结构列表)); head->data=data;head->next=NULL; }否则{ tail->next=malloc(sizeof(struct list)); tail=tail->next; 尾部->数据=数据; tail->next=NULL; } } 作废删除(结构列表*头,结构列表*尾) { 结构列表*temp; 如果(头=尾) { 自由(头); 头=尾=空; }否则{ 温度=头部->下一步; 自由(头); 压头=温度; } },c,linked-list,C,Linked List,我的目标是返回3的输出,但继续得到随机结果。任何洞察都是值得赞赏的C函数的参数是通过值传递的。因此,对add()函数中head和tail的值所做的更改将不会反映在调用add()的main()中 而且,您似乎没有为printf()提供第二个参数,因此%d格式不会得到它将要查找的整数值 C函数的参数通过值传递。因此,对add()函数中head和tail的值所做的更改将不会反映在调用add()的main()中 而且,您似乎没有为printf()提供第二个参数,因此%d格式不会得到它将要查找的整数值 当

我的目标是返回3的输出,但继续得到随机结果。任何洞察都是值得赞赏的

C函数的参数是通过值传递的。因此,对
add()
函数中
head
tail
的值所做的更改将不会反映在调用
add()
main()


而且,您似乎没有为
printf()
提供第二个参数,因此
%d
格式不会得到它将要查找的整数值

C函数的参数通过值传递。因此,对
add()
函数中
head
tail
的值所做的更改将不会反映在调用
add()
main()


而且,您似乎没有为
printf()
提供第二个参数,因此
%d
格式不会得到它将要查找的整数值

当您想要修改
头部
尾部
时,您需要向它们传递一个指针

i、 e

对另一个函数执行类似操作。然后头部和尾部也会在功能之外发生变化

线路

void add(struct list **head, struct list **tail, int data)
{ 
    if(*tail==NULL)
    { 
        *head = *tail = malloc(sizeof(struct list)); 
        (*head)->data = data;
        (*head)->next = NULL; 
    } else { 
        (*tail)->next = malloc(sizeof(struct list)); 
        *tail = (*tail)->next; 
        (*tail)->data = data; 
        (*tail)->next = NULL; 
    } 
}
它需要一个整数来打印-提供它-有关详细信息,请参阅手册页


<>避免在C程序中使用C++的关键字,如<代码>删除> />代码> < /p> < p>。如要修改<代码>头<代码>和<代码>尾<代码>,需要传递指针。

i、 e

对另一个函数执行类似操作。然后头部和尾部也会在功能之外发生变化

线路

void add(struct list **head, struct list **tail, int data)
{ 
    if(*tail==NULL)
    { 
        *head = *tail = malloc(sizeof(struct list)); 
        (*head)->data = data;
        (*head)->next = NULL; 
    } else { 
        (*tail)->next = malloc(sizeof(struct list)); 
        *tail = (*tail)->next; 
        (*tail)->data = data; 
        (*tail)->next = NULL; 
    } 
}
它需要一个整数来打印-提供它-有关详细信息,请参阅手册页


避免在C程序中使用C++的关键字,如<代码>删除> />代码>

这里存在许多问题。 首先,当向函数传递指针时,指针按值传递。对被调用函数中指针的任何更改都不会反映在调用函数中。要更改调用函数中的指针指向的对象,需要将指针传递给指针。因此,您的
add()
函数需要:

printf("First element: %d"); 
您的
delete()
函数也需要进行类似的更改

其次,将NULL作为数据值传递给add函数。NULL是一个指针;它通常定义为宏,在实现中可以是
(void*)0
。不应将其用作整数。将
0
作为整数传递,不能为空

第三,你有这样的说法:

void add(struct list **head, struct list **tail, int data) { 
    if(*tail == NULL) { 
        *head = *tail = malloc(sizeof(struct list)); 
        (*head)->data = data; 
        (*head)->next = NULL; 
    } 
    else { 
        (*tail)->next = malloc(sizeof(struct list)); 
        (*tail) = (*tail)->next; 
        (*tail)->data = data; 
        (*tail)->next = NULL; 
    } 
    return;
}
格式字符串具有转换说明符
%d
,但没有与
%d
匹配的参数。这是未定义的行为。你到底想打印什么整数


您希望输出在哪里,原因是什么?

这里有许多问题

首先,当向函数传递指针时,指针按值传递。对被调用函数中指针的任何更改都不会反映在调用函数中。要更改调用函数中的指针指向的对象,需要将指针传递给指针。因此,您的
add()
函数需要:

printf("First element: %d"); 
您的
delete()
函数也需要进行类似的更改

其次,将NULL作为数据值传递给add函数。NULL是一个指针;它通常定义为宏,在实现中可以是
(void*)0
。不应将其用作整数。将
0
作为整数传递,不能为空

第三,你有这样的说法:

void add(struct list **head, struct list **tail, int data) { 
    if(*tail == NULL) { 
        *head = *tail = malloc(sizeof(struct list)); 
        (*head)->data = data; 
        (*head)->next = NULL; 
    } 
    else { 
        (*tail)->next = malloc(sizeof(struct list)); 
        (*tail) = (*tail)->next; 
        (*tail)->data = data; 
        (*tail)->next = NULL; 
    } 
    return;
}
格式字符串具有转换说明符
%d
,但没有与
%d
匹配的参数。这是未定义的行为。你到底想打印什么整数


您希望输出
3
,原因是什么?

在您的程序中开始和结束是全局变量,因此不需要将其作为参数传递给其他函数,因为其他方法可以直接访问它

printf("First element: %d");
注意:
如果您不希望开始和结束是全局的,那么它可以是主函数的局部变量。在这里,您必须使用双指针机制或返回内存地址来保留修改

在程序中,start和end是全局变量,因此不需要将其作为参数传递给其他函数,因为其他方法可以直接访问它

printf("First element: %d");
注意:
如果您不希望开始和结束是全局的,那么它可以是主函数的局部变量。在这里,您必须使用双指针机制或返回内存地址来保留修改

你实际得到了什么结果?为什么你不能修复糟糕的格式,而不是道歉呢?为什么不在向全世界公布之前整理一下格式呢?和写这篇文章的时间差不多,可能会发现