Arrays 将结构数组插入链表
我的链表要求我创建一个struct数组,其中包含一个人名(定义为4个字符的名称)以及此人与我的距离 创建3个数组元素后,我将每个人及其距离放入一个链表中 我已经制作了阵列并成功地按原样打印了它,但在制作列表时遇到了问题 我的代码如下所示,非常感谢您提供一个解决方案来启动并运行代码Arrays 将结构数组插入链表,arrays,c,struct,linked-list,Arrays,C,Struct,Linked List,我的链表要求我创建一个struct数组,其中包含一个人名(定义为4个字符的名称)以及此人与我的距离 创建3个数组元素后,我将每个人及其距离放入一个链表中 我已经制作了阵列并成功地按原样打印了它,但在制作列表时遇到了问题 我的代码如下所示,非常感谢您提供一个解决方案来启动并运行代码 typedef struct Node { int dist; char name[4]; struct Node* next; }Node; void main() { in
typedef struct Node
{
int dist;
char name[4];
struct Node* next;
}Node;
void main()
{
int i;
Node arr[3];
for (i = 0; i < 3; i++)
{
printf("Enter name: \n");
scanf("%s", arr[i].name);
printf("Enter distance: \n");
scanf("%d", &arr[i].dist);
}
printf("Basic printing of the ARRAY:");
for (i = 0; i < 3; i++)
{
printf("Distance of %s is: %d\n", arr[i].name, arr[i].dist);
}
printf("\n\n\n");
Node* head;
Node* tail;
head = tail = NULL;
head = malloc(sizeof(Node));
tail = malloc(sizeof(Node));
for (i = 0; i < 3; i++)
{
if (i == 0)
{
head->dist = arr[i].dist;
head->name[4] = arr[i].name;
tail = head;
}
else
{
tail->next = malloc(sizeof(Node));
tail = tail->next;
tail->next = NULL;
tail->dist = arr[i].dist;
tail->name[4] = arr[i].name;
}
}
Node* temp;
temp = head;
printf("Now we print the list\n");
for (i = 0; i < 3; i++)
{
printf("Distance of %s is: %d\n", temp->name, temp->dist);
temp = temp->next;
}
typedef结构节点
{
国际区;
字符名[4];
结构节点*下一步;
}节点;
void main()
{
int i;
节点arr[3];
对于(i=0;i<3;i++)
{
printf(“输入名称:\n”);
scanf(“%s”,arr[i].name);
printf(“输入距离:\n”);
scanf(“%d”,&arr[i].dist);
}
printf(“数组的基本打印:”);
对于(i=0;i<3;i++)
{
printf(“%s的距离为:%d\n”,arr[i].name,arr[i].dist);
}
printf(“\n\n\n”);
节点*头;
节点*尾部;
头=尾=空;
head=malloc(sizeof(Node));
tail=malloc(sizeof(Node));
对于(i=0;i<3;i++)
{
如果(i==0)
{
head->dist=arr[i]。dist;
head->name[4]=arr[i]。名称;
尾=头;
}
其他的
{
tail->next=malloc(sizeof(Node));
tail=tail->next;
tail->next=NULL;
尾部->距离=arr[i]。距离;
tail->name[4]=arr[i]。name;
}
}
节点*温度;
温度=水头;
printf(“现在我们打印列表\n”);
对于(i=0;i<3;i++)
{
printf(“%s的距离为:%d\n”,临时->名称,临时->距离);
温度=温度->下一步;
}
我找到了一个解决办法。
将名称输入列表时,正确使用strcpy
right way:
strcpy(tail->name, arr[i].name)
wrong way (what I used):
tail->name[4]=arr[i].name;