Code前端首页关于Code前端联系我们

单链表概念&设计...(头插入法、尾插入法)C语言代码

terry 2年前 (2023-09-27) 阅读数 66 #数据结构与算法

1。单链表的概念与设计

单链表是一种具有链式访问的数据结构,链表中的数据由一个节点表示,每个节点由:元素(数据元素图像)+指针(指针)组成。后续元素的存储位置)。元素是存储数据的存储单元,指针是连接各个节点的地址数据。 。以“节点的顺序”表示的线性表称为线性链表(单链表),单链表是一种链式访问结构。

对于链表的每个节点,我们使用一个结构体(struct)来进行设计。主要内容有:

单链表概念&设计…(头插入法、尾插入法)C语言代码

其中,DATA数据元素可以是任何你想要存储的数据格式。它是一个数组,可以是一个int,甚至可以是一个结构体(这是传说中的结构体中的结构体)

NEXT是一个指针,表示可以指向的区域,通常用来指点。到下一个节点,链表末尾的NEXT表示NULL(空),因为末尾无处可去

因此,对于单链表的节点的定义,代码可以这样描述as:

123456//定义节点类型 typedef struct
int 数据; // 数据类型,可以将int类型数据改为任意数据类型,包括struct结构体等复合类型 struct ♺;Nodene //来自list的指针字段单链 } Node,*LinkedList; //Node 表示节点类型,LinkedList 表示指向节点类型 Node 的指针类型

2. 初始化

与任何需要链接初始化操作的结构体和类型一样。初始化是创建一个链表。向前结并逐渐添加向后结。一般来说,我们所说的初始化单链表一般是指申请一个节点空间,同时给该节点添加一个空值(NULL)。代码可以写为:

123456789LinkedList listinit(){ Node *L; L=(Node*)♷♷♷♷ ♷ 尺寸 (节点)); //腾出空间 if(L==NULL){            ♷ printf

Want申请空间"

); } L->下一个=NULL; // 指针为空 }

这里有一点要注意,那就是我们要记住,空间打开失败,即使在很多试题和一般环境下都是可用的。环境非常安全,几乎没有开发失败的情况。不过,我们也需要养成开发失败时进行判断,失败后执行代码的习惯。但由于生产中的情况未知,如果开发空间失败,代码继续执行,后果将不堪设想,所以需要开发判断。在 C++ 中,您可以使用 try-catch 等语句进行优化

3。创建链表(头插入法)

初始化完成后,就可以开始创建链表了。创建链表有两种方法:头插入法和尾插入法。两者之间没有显着差异。两者都是通过将指针指向下一个节点元素而一次创建一个。唯一的区别是,最终结果是采用倒序插入头的方法得到的。

如图所示,创建头部插值方法的流程:

单链表概念&设计…(头插入法、尾插入法)C语言代码

该方法从一个空表开始,生成一个新节点,并将读取到的数据存储在新节点的数据字段中。 。然后将新节点插入到当前链表的头部,即头节点之后。? *) malloc(大小(节点)); // 申请头节点空间 L->next = NULL; //空链接列表初始化 int x; //x为链接列表数据栏中的数据 while(scanfscanf((,&x ) != EOF ) { 节点 *p; p = (节点 *)mallok(( )) ; / / 应用新节点 p->data = x; //节点数据字段赋值    p->next = L->next; //Ins ert 节点进入标题 L-->|2|-->|1|-->NULL L->下一个 = p; } 返回 L;

插法)

如图所示,是制作尾部插法过程。

单链表概念&设计…(头插入法、尾插入法)C语言代码

通过头插值创建单链表的算法虽然简单,但链表中节点的顺序与输入数据的顺序不一致。如果希望两个序列一致,可以使用尾部插入的方法。

该方法将新节点一一插入到当前链表的尾部。为此,我们必须添加尾指针r,使其始终指向当前链表的尾节点。否则链表无法正确写入。

//创建链表2、尾插入法创建单个链表 LinkedList LinkedListCreatT() {
123456
123456 L = (节点 *) mallok(尺寸(节点)); // 申请头节点空间 L->next = NULL; //初始化一个空链表 Node *r; r = L; //r始终指向终端节点,从头节点int x开始; f("%d",&x) != EOF) { 节点 *p;
123456 =
123456

马洛克

(尺寸(节点)); //应用新节点 p->data = x; //节点数据列赋值 r- >next = p; //将要完成的点插入头L-->|1|-->|2|-->NULL   r = p; ext = NULL;返回L;}

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门