C语言实现静态链表的建立

嵌入式技术

1333人已加入

描述

在这么卷的时代,我觉得硬件工程师还是 要掌握基本的C语言编写能力,链表在学生阶段是一个比较难的知识点,可能有些同学上完一个大学都不会链表的编写,但是在未来工作中, 链表应用不管在嵌入式行业还是互联网行业都应用的非常基础,所以这个知识点是有必要全面掌握的。 下面将手把手教你,用开发软件写一个简单的静态链表程序。

关键词:静态链表;

01什么是链表

1.1、通俗易懂的解释

链表是一种常见的重要的数据结构,它是动态地进行存储分配的一种结构,链表和数组比较,不用事先确定存储空间,而是根据需要开辟内存单元。 图1-1是最简单的一种链表(单向链表)的结构:

C语言

图1-1 单向链表结构图

图1-1中,第0个结点称为 头结点 ,它存放有第一个结点的首地址,它没有数据,只是一个 指针变量 。

以下的每个结点都分为两个域,一个是 数据域 ,存放各种实际的数据,如学号 num,姓名 name,性别 sex 和成绩score 等。

另一个域为 指针域 ,存放下一结点的首地址。 链表中的每一个结点都是同一种结构类型。

1.2、环境搭建

用的Visual Studio 2019软件。

1.3、建立新项目(C语言)

首先,打开软件,点击【创建新项目】,如图1-3所示:

C语言

图1-3 创建新项目

然后在新项目中点击【空项目】,如图1-4所示:

C语言

图1-4 点击空项目

接着,配置【项目名称】和【项目储存位置】,如图1-5所示:

C语言

图1-5 配置项目

最后,在【源文件】中添加【C文件】,如图1-6所示:

C语言

图1-6 添加C文件

02建立链表

2.1、建立静态链表

建立链表所需要的头文件,代母如下:

#include//标准输入输出头文件

#include//包含了C、C++语言的最常用的系统函数

需要使用宏定义定义相关变量,代码如下:

#define LEN sizeof(struct Student)//宏定义节点长度得命名

#define TYPE struct Student //宏定义结构体变量命名

需创建一个结构体,代码如下:

struct Student //定义一个学生类型结构体,包括学号,分数

{

长数;

浮动分数;

struct Student* next; //next是指针变量,指向结构体变量

};//指向结构体对象得指针变量既可以指向结构体变量,也可以指向结构体数组中得元素

需编写主函数,代码如下:

int main()

{

TYPE* head,*p; //定义头指针

struct Student a,b,c; //定义三个结构体变量

a.num = 101; a.score = 20; //分别对三个结点赋值

b.num = 102;b.分数 = 20;

c.num = 103;c.分数 = 20;

/*1、A.B则A为对象或者结构体

2、A->B则A为指针,->是成员提取,A->B是提取A中的成员B,A只能是指向类、结构、联合的指针; */

头 = &a;

a.next = &b;

b.下一个 = &c;

c.next = 空;

p = head; //把首地址给变量

{

printf("%ld %5.1f\\n",p->num,p->score);//输出每个结点信息

p = p->next; //使P指向下一个结点

} while (p != NULL); //直到指针域指向空值

返回 0;

}

运行程序,最终结果显示如图1-7所示:

C语言

图1-7 运行结果界面

图1-7最终将链表各个成员的数据逐个输出,表明建立的链表是正确的。

将第一个结点的起始地址赋值给头指针head,将第二个结点的起始地址赋值给第一个结点的next成员,将第二个结点的起始地址赋给第一个结点的next… 第三个结点的next赋值为NULL,这就形成了简单的链表。

但是这种是手动逐个建立的链表,简称【静态链表】,这种对于成员数目一定的情况比较适用,但是对于成员数目很多的情况,就不能使用这种方法了,比较繁琐,所以需要使用动态的方式添加链表,下期讲解动态链表!

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分