C语言数据结构——链表

C语言文章更新目录

C/C++学习资源(百度云盘链接)
计算机二级资料(过级专用)
C语言学习路线(从入门到实战)
编写C语言程序的7个步骤和编程机制
C语言基础-第一个C程序
C语言基础-简单程序分析
VS2019编写简单的C程序示例
简单示例,VS2019调试C语言程序
C语言基础-基本算法
C语言基础-数据类型
C语言中的输入输出函数
C语言流程控制语句
C语言数组——一维数组
C语言数组——二维数组
C语言数组——字符数组
C语言中常用的6个字符串处理函数
精心收集了60个C语言项目源码,分享给大家
C语言核心技术——函数
C代码是怎样跑起来的?
C语言实现字符串的加密和解密
C语言——文件的基本操作

今天来介绍一下C语言中常见的一种数据结构——链表

如下是链表的结构示意图:

C语言数据结构——链表_第1张图片

在链表中有一个头指针变量,图中head表示的就是头指针,这个指针变量保存一个地址。也就是说头指针指向一个变量,这个变量就是量表的元素。在链表中每一个元素包括数据部分和指针部分。数据部分用来存放元素所包含的数据,而指针部分用来指向下一个元素。最后一个元素的指针指向null,表示指向的地址为空。

从示意图中我们可以看到,head头结点指向第一个元素,第一个元素的指针指向第二个元素,第二个元素的指针又指向第三个元素,第三个元素的指针指向null。这样我们就可以通过头指针寻找链表中的元素。

下来我们通过一个具体的实例来深入地了解一下链表,编写一个学生信息的链表结构,并且将链表中的信息进行输出。

#define _CRT_SECURE_NO_WARNINGS
#include
#include

struct Student
{
    char name[20];//姓名
    int id;//学号
    struct Student* next;//指向下一个节点的指针
};

int count;//表示链表长度

struct Student* create()
{
    struct Student* head = NULL;//初始化链表的头指针
    struct Student* end, * new;
    count = 0;//初始化链表长度

    end = new = (struct Student*)malloc(sizeof(struct Student));//动态分配内存空间
    printf("请输入姓名,学号\n");
    scanf("%s", &new->name);
    scanf("%d", &new->id);
    while (new->id != 0)
    {
        count++;
        if (count == 1)
        {
            new->next = head;//使得指向为空
            end = new;//跟踪新加入的节点
            head = new;//头指针指向首节点
        }
        else
        {
            new->next = NULL;//新节点的指向为空
            end->next = new;//原来的为节点指向新节点
            end = new;//end指向新节点
        }

        new = (struct Student*)malloc(sizeof(struct Student));//再次动态分配节点的内存空间
        scanf("%s", &new->name);
        scanf("%d", &new->id);

    }
    free(new);//释放空间
    return head;
};

void show(struct Student* head) {
    struct Student *temp;
    int index = 1;
    printf("有%d位学生:\n",count);
    temp = head;
    while (temp != NULL)
    {
        printf("第 %d 位学生的姓名是:%s,学号是:%d \n", index, temp->name, temp->id);
        temp = temp->next;
        index++;
    }
}

int main() {
    struct Student* head;//定义头结点
    head = create();//创建节点
    show(head);//输出链表
    return 0;
}

运行结果

C语言数据结构——链表_第2张图片

如果您觉得本篇文章对您有帮助,请转发给更多的人
C语言中文社区】是一个C语言/C++视频教程、学习笔记、电子书、计算机二级资料等专注于C语言/C++编程学习者的干货知识分享平台,精选深度文章,分享优秀干货类、技能类的学习资源,帮助学习中的你。
在这里插入图片描述

你可能感兴趣的:(C语言,C语言,数据结构,链表)