它是链接列表实现吗?

时间:2014-07-15 16:02:41

标签: c linked-list

我只是学习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;
}

2 个答案:

答案 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的原始目标,从指向第二个然后再到第三个, 它不能指向两者,第二个包含指向第三个的指针,第三个包含指向第四个的指针....