我只是在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;
}
您正确编写的代码构建了一个单链表,但不是单链表数据结构的一般实现。因此,可以应用于链表的操作(例如,insert
在给定位置上的一个元素,append
在列表末尾的一个元素或count
在列表中的元素数量)被抽象出来并移动到实用函数中。
因此,作为下一步,尝试实现void append(struct node* head, int value)
函数,给定指向列表头部的指针,将具有给定值的新节点附加到列表末尾。然后,尝试使用这个函数来表示列表的构造。
#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的原始目的地。从第二点链接到第三点,它不能同时指向两个,第二个包含指向第三个的指针,第三个包含指向第四个的指针....