gpt4 book ai didi

c - 从命令行参数创建链表

转载 作者:太空宇宙 更新时间:2023-11-04 01:31:15 25 4
gpt4 key购买 nike

我必须根据从命令行输入的参数创建一个链表。您应该输入整数并从中创建一个链表。当您输入 -1 时,则停止从命令行读取。相当简单,但我遇到了一些麻烦。我拥有的是:

#include <stdlib.h>

struct node
{
int grade;
struct node *next;
};

int
main (int argc, char *argv[])
{
struct node *root;
root = (struct node *) malloc (sizeof (struct node));
root->next = 0;
root->grade = 0;
int i;
for (i = 0; i < argc; i++)
{
if (&argv[i] == -1)
{
break;
}
else
{
struct node *new_item_ptr;
new_item_ptr = malloc (sizeof (struct node));
new_item_ptr->grade = (*int) argv[i];
(*new_item_ptr).next = root;
root = new_item_ptr;
}
}
}

我想我已经很接近了,但是有一些东西不能正常工作。例如,我不认为 for(i = 0; i < argc; i++)是正确的。编译器说 new_item_ptr->grade = (*int) argv[i];错也。谁能帮我解决这个问题?我想我很接近,只是有一些小错误。

最佳答案

首先,您已经malloc 了一个完全没有必要的结构。如果用户没有输入任何数据,您可以返回一个由 root = NULL 指示的空列表。因此,初始部分可能是:

root = ( struct node * ) NULL;
if ( argc < 2 )
return ( 0 );

就您的代码而言,第一个节点的 root->grade 始终为 0。在循环中,您应该分配内存并使用 atoiargv[i] 转换为整数。最后,您的循环应以 i=1 开头,因为 argv[0] 本身就是命令名称。

关于c - 从命令行参数创建链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22131987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com