数据结构-1.0链表简单创建

本文使用VS2019和C语言介绍了如何创建链表数据结构,详细分析了代码实现过程,对可能出现的问题进行了深入思考,旨在帮助读者更好地理解和运用链表。
摘要由CSDN通过智能技术生成

软件平台:VS2019    语言:C语言             

 一:代码实现

#include<stdio.h>
#include<stdlib.h>
/*
要构建的链表结构:Headp[地址]->[2][地址]->[4][地址]->[6][NULL]
我们使用临时变量来创建链表
我们这里使用的是尾插法
*/
struct Node {
    int date;
    struct Node* Link;

};
int main()
{
    /*************定义一个头指针***************/
    struct Node* Headp;
    Headp = NULL;//指针 A 初始化为 NULL。这意味着它当前不指向任何有效的内存地址,也就是说,链表是空的,没有任何节点
    

     /*************使用临时变量来往常节点的插入与遍历***************/
    struct Node* temp = (struct Node*)malloc(sizeof(struct Node));//这里我们使用动态内存的方法去创建
    temp->date = 2;//temp去存放头节点
    temp->Link = NULL;
    Headp = temp;//将头节点的地址给头指针

    //使用临时变量创建第二个节点
    struct Node* temp1 = (struct Node*)malloc(sizeof(struct Node));
    temp1->date = 4;
    temp->Link = temp1;
    temp1->Link = NULL;

    //使用临时变量创建第三个节点
    struct Node* temp2 = (struct Node*)malloc(sizeof(struct Node));
    temp2->date = 6;
    temp2->Link = NULL;
    temp1->Link = temp2;

    /*************创建节点完成,并对四个节点进行连接,现在开始对四个节点进行遍历***************/
    struct Node* ListTraver;//定义一个变量进行遍历
    ListTraver = NULL;
    ListTraver = Headp;//这行代码将Headp的值(即链表的第一个节点的地址)赋给ListTraver。这意味着ListTraver现在也指向了链表的第一个节点,这样你就可以使用ListTraver遍历整个链表,从头节点开始。
    int i = 0;
    while (ListTraver != NULL) {
    
        printf("%d,%d\n", ListTraver, ListTraver->date);
       //这个时候必须要把这段代码放在ListTraver = ListTraver->Link;之前
       /*
            如果我们放在后面的话,因为已经遍历到下一个节点了,输出结果是
            第-278648672个节点的地址是4,它的值是1447556424
            第0个节点的地址是6, 它的值是510654672
        */

        ListTraver = ListTraver->Link;
        /*
            date:该组件存储与节点关联的数据(在本例中为整数)。
            Link:该组件是指向链表中下一个节点的指针。它用于建立列表中节点之间的连接。
            ListTraver->Link以下是代码中发生的情况的详细说明:
            最初,ListTraver被设置为指向Headp链表中的第一个节点( )。
            在循环内部while,ListTraver->Link用于访问当前节点(ListTraver)的“Link”指针,
            该指针指向列表中的下一个节点。
            ListTraver然后更新为指向下一个节点(即ListTraver = ListTraver->Link;),有效地移 
             动到列表中的下一个节点。
            这个过程一直持续到ListTraver变成NULL,表示链表结束。
            因此,ListTraver->Link用于通过从一个节点移动到下一个节点直到到达列表末尾来遍历链表。
        */


        //将链表的各个节点的值进行打印
        /*++i;    //这段代码放在后面报错*/
        /*printf("第%d个节点的地址是%d,它的值是%d\n",  ListTraver->Link, ListTraver->date);*/
        
    }
    return 0;
}

二:结果

三:总结

对每一段代码都进行了分析,对每一个会报错的地方都进行了思考,虽然是比较简单的代码也不断激励着笔者在编程的路上越走越远

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程者也

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值