我只是学习C中的指针并实现了一个包含3个元素的单链表。这是正确的方法吗?即使它不是,我写的代码是否代表一个链表?
#include <stdio.h>
struct node
{
int a;
struct node *link;
};
int main()
{
struct node first;
struct node second;
struct node third;
first.a=1;
first.link=&second;
first.link->a=2;
first.link->link=&third;
first.link->link->a=3;
printf("\n%d",first.a);
printf("\n%d",second.a);
printf("\n%d",third.a);
return 0;
}
答案 0 :(得分:0)
您正确编写的代码构造了单链表,但不是单链表数据结构的一般实现。为此,可以应用于链接列表的操作(例如insert
给定位置的元素,append
列表末尾的元素或count
的数量抽象出来并将其移入实用功能中。
因此,作为下一步,尝试实现一个void append(struct node* head, int value)
函数,在给定指向列表头部的指针的情况下,将具有给定值的新节点附加到列表的末尾。然后,尝试使用此函数表达列表的构造。
答案 1 :(得分:0)
#include <stdio.h>
struct node
{
int a;
struct node *link;
};
int main()
{
struct node first;
struct node second;
struct node third;
first.a=1;
first.link=&second;
first.link->a = 2;
second.link=&third;
second.link->a=3;
printf("\n%d",first.a);
printf("\n%d",second.a);
printf("\n%d",third.a);
return 0;
}
//每个结构中的节点需要指向下一个结构,你的代码正在改变first.link的原始目标,从指向第二个然后再到第三个, 它不能指向两者,第二个包含指向第三个的指针,第三个包含指向第四个的指针....