C语言学习笔记—链表(五)链表的动态创建

C语言链表——增删改查 链表是一种数据结构,是一种数据存放的思想 阅读详情

在这里插入图片描述

头插法

也就是说头结点就是最新的节点,新节点一进来就是头节点。

#include <stdio.h>
//定义结构体
struct Test 
{
	int data;
	struct Test *next;
};
//输出链表数据
void printLink(struct Test *head)
{
	struct Test *piont = head;
	
	while(piont != NULL){
		printf("%d ",piont->data);
		piont = piont->next;
	}
	putchar('\n');
}
struct Test *insertLinkForHead(struct Test *head)
{
	struct Test *new;
	//开辟空间
	new = (struct Test *)malloc(sizeof(struct Test));
	//输入数据
        printf("input you new node data:\n");
        scanf("%d",&(new->data));
        //如果链表为空把就把新的节点作为头节点
	if(head == NULL){
		head = new;
		return head;
	}else{
	new->next = head;
	head = new;
		}
    return head;
}
int main()
{
	int n;
	printf("Please enter the number of nodes\n");
	scanf("%d",&n);
	struct Test *head = NULL;

	while(n--){
	head = insertLinkForHead(head);	
	}
	printLink(head);
	return 0;
}

尾插法

即尾结点就是最新的节点。

#include <stdio.h>
//定义结构体
struct Test 
{
	int data;
	struct Test *next;//链表有一个指向自己的指针
};
//输出链表数据
void printLink(struct Test *head)
{
	struct Test *piont = head;
	while(piont != NULL){
		printf("%d ",piont->data);
		piont = piont->next;
	}
	putchar('\n');
}
struct Test *insertLinkForTail(struct Test *head)
{
	struct Test *new;
	struct Test *point = head;
	//开辟空间
	new = (struct Test *)malloc(sizeof(struct Test));
	//输入数据
        printf("input you new node data:\n");
        scanf("%d",&(new->data));
        //如果链表为空把就把新的节点作为头节点
	if(head == NULL){
		head = new;
		return head;
	}
	//当当前结点的指向不为空时说明还未到达尾结点,继续向下偏移
	while(point->next != NULL){
	point = point->next;
		}
	//偏移完成后尾结点指向新节点,新节点变为尾结点
	point->next = new;
    return head;
}
int main()
{
	int n;
	printf("Please enter the number of nodes\n");
	scanf("%d",&n);
	struct Test *head = NULL;
	while(n--){
	head = insertLinkForTail(head);	
	}
	printLink(head);
	return 0;
}

执行结果:
在这里插入图片描述

C语言之动态创建链表的两种方式 之前我们说的链表是基于静态创建的,但静态创建的链表很不灵活而且在工作中的项目中的很多场景都不适合,所以我们来记录一下链表的两种动态创建的方式。 1.方式一:链表动态创建之头插法 那么我们直接上代码讲: struct Test* insertLinkfrontHead(struct Test *head,struct Test *new) {//动态创建链表之头插法 if(head == NULL) { head = new; } else { new->next = h 阅读详情

相关推荐

【C语言学习笔记】算法篇——栈、队列、链表

#学习资料:《啊哈!算法》、《算法图解》 队列 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。 生活实例:排队买票 原则:FIFO 用处:广度优先搜索以及队列优化的BELLMAN-FORD最短算法的核心数据结构 代码展示(取自啊哈!算法中的解密) #include <stdio.h> int main() { int

z 486

C语言结构体链表 节点插入方法(从前和从后)

1.如果是从头节点前插入,则直接令新节点的下一个等于头节点,然后返回新节点即可。第三个参数是要插入的节点的位置,用结构体的值来表示(实际项目可自由更改)第四个参数是插入方式(前AHEAD/后BEHIND)第一步那么新节点的NEXT等于P->NEXT。第一步那么新节点的NEXT等于P->NEXT。第二步P的NEXT指向新节点。第二步P的NEXT指向新节点。第二个参数是要插入的新节点地址。第一个参数是原链表头节点地址。...

m0_52870614的博客 6963

C语言动态链表的建立

动态链表的建立程序,用C语言编写,供技术与编程人员参考

C语言——单链表操作

单链表的简单介绍 单链表是一种链式存取的数据结构,用一组任意地址空间(地址空间即存储单元)来存放线性表的数据元素。单链表中的数据是以节点的形式来表示,而节点是用结构体来描述,每个节点都是由元素和指针构成,即每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 单链表、双链表、循环单链表的节点结构为如下所示: ...

口袋里的跳跳糖 1188

手把手教你用Pico4UE搭建100平米VR大空间:从设备检查、系统升级到地图绘制全流程

本文详细介绍了使用Pico4UE搭建100平米VR大空间的完整流程,包括设备检查、系统升级、地图绘制和性能优化等关键步骤。通过实战案例和专业技术建议,帮助用户高效部署企业级VR解决方案,适用于展厅漫游、工业仿真等多种场景。

weixin_28273593的博客 507

STM32H743 LAN8720网口配置避坑指南:用CubeMX v6.5.0快速搞定LWIP+FreeRTOS

本文详细介绍了使用CubeMX v6.5.0配置STM32H743与LAN8720网口的LWIP+FreeRTOS方案,涵盖硬件连接、时钟配置、ETH外设初始化及LWIP协议栈调优等关键步骤。特别针对常见陷阱提供解决方案,帮助开发者快速实现稳定网络通信,适用于嵌入式网络开发场景。

weixin_33739523的博客 357

链表的前插法与尾插法

今天我用代码和文字来展示一下链表中的前插法与尾插法这两个重要的算法过程。

RogersX的博客 1万+

DSPF28335:从零到一,实战GPIO与外部中断的嵌入式系统交互设计

本文以德州仪器DSPF28335芯片为例,详细讲解了嵌入式系统中GPIO与外部中断(EXTI)的实战配置方法。通过一个完整的按键控制LED并触发ADC采样的项目,深入剖析了GPIO寄存器配置、三级中断机制(外设-PIE-CPU)以及中断服务函数编写的核心要点,帮助开发者掌握嵌入式交互设计的基石,并提供了关键的避坑指南与调试清单。

weixin_29169899的博客 115

整理的链表几种插入方式一之从前面插入(C语言)

前面我总结了从中间节点插入,这次总结一个从头部来插入 struct Test { int data; struct Test *next; } struct Test *insertFromhead(struct Test *head,int data,struct Test *new) { if(head->data == data){//头节点 new->next = head; return new;//直接从链表头插入 } while(head->next!=NULL){//非头节

Cjianan的博客 4395

蓝牙开发实战:如何用Wireshark抓取HCI协议包(附完整分析步骤)

本文详细介绍了如何使用Wireshark抓取和分析蓝牙HCI协议包,包括环境搭建、过滤器配置技巧、数据包深度解析及高级调试方法。通过实战案例,帮助开发者快速定位蓝牙连接问题,提升调试效率。

cuda7parallel的博客 1148

密码学:一文看懂Base64算法

Base64常常在我们开发中出现,我们可能只知道它是一串乱码(看不懂的符号),知道有时候知道我们需要把一些数据进行base64编码,有时候需要进行Base64解码。但是却不知道它的作用是什么?它存在的意义是什么?还有它是如何生成的?如何编码和解码?上述的疑问相信在你读完本篇文章之后烟消云散。下面开始正文。Base64是什么?它和加密解密操作有什么关系吗?没错,这就是经过Base64编码后的字符串。对它解码后,我们获得以下内容点个关注,是对我持续创作的最大的鼓励!

Shujie 1万+

链表(C语言)

前言 本次我们介绍链表的创建及增,删,改,查。 ` 一、链表是什么? 首先我们来了解一下线性存储结构。线性存储结构是一种最常见的存储结构。其特点是数据元素之间存在一一对应的关系。线性存储结构又分为两种,即顺序存储结构和链式存储结构。 1.首先,我们来了解一下顺序存储结构。顺序存储的线性表称为顺序表(数组)。其原理是逻辑上相邻的元素在物理位置上也相邻。 我们可以理解为一堆按照一定顺序摆放的书。我们在知道它的排列规律之后就可以通过它的排列规律来找到我们想找到的那本书。我们也可以通过一本一本的去找,来找到我们想要

weixin_61196797的博客 4967

Unity3d实现红外热成像效果

1.将需要在红外图像中高亮的物体设置到图层PostProcessing。 2.新建一个相机CameraHighLight,设置其Culling Mask为PostProcessing,也就是在这个相机中只有PostProcessing图层的物体可见。 3.新建一个RenderTexture,命名为HightLightRt,将CameraHighLight的Target Texture设HightLightRt。 4.新建一个相机Camera2,这个相机用于显示其他物体。 接下来将CameraHigh

zouxin_88的专栏 8327

C语言—链表

【C语言】—链表 创建,遍历,增删改查 链表是一种数据结构,是一种数据存放的思想;

weixin_73588765的博客 2万+

100个Python实战项目(七)实现摩斯密码翻译器

作者主页:海拥 作者简介:优快云全栈领域优质创作者、HDZ核心组成员、蝉联C站周榜前十 粉丝福利:往期获奖记录 每周送6~9本书,不定期送各种小礼品(搪瓷杯、抱枕、鼠标垫、马克杯等) 摩斯密码是一种将文本信息作为一系列通断的音调、灯光或咔嗒声传输的方法,无需特殊设备,熟记的小伙伴即可直接翻译。它以电报发明者Samuel F. B. Morse的名字命名。 算法 算法非常简单。英语中的每个字符都被一系列“点”和“破折号”代替,或者有时只是单数的“点”或“

努力是为了站在万人之中,成为别人的光 1万+

Altium Designer(AD24/25)如何在PCB设计阶段做阻抗匹配

目前阻抗匹配多直接有制版厂进行,PCB设计师在设计阶段可不关注阻抗设计,在加工阶段只需标注需要控制的阻抗线,制板厂即可按照要求对阻抗线进行调整和控制。但是对于设计师来讲掌握阻抗线的设计方法也是非常必要的。本文介绍Altium Designer(AD24/25)如何在PCB设计阶段做阻抗匹配。

fydar的博客 893

C语言数据结构:链表的增删改查及动态创建

把它想象成自行车链条,由n个节点组成,可以对这些节点进行“增,删,改,查”等操作,即对数据的操作。 ● 可以进行动态存储分配; ● 可以在节点中定义多种数据类型; ● 链表都有一个头指针,一般以head来表示,存放的是一个地址;● 链表中包含头结点和其它节点两种,头结点是没有数据域的; ● 链表中每个节点都分为两个区域,一个数据域,一个是指针域;

m0_74985965的博客 2722

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

数据结构:动态创建单链表(C语言)

单链表的原理就不细述了,不懂的可以看一下其他文章或者教学视频。这里简单回顾一下原理: 简单来说类似与火车车厢连接,但又不同,因为火车车厢可以从当前车厢走到上一个或者下一个车厢,但单链表就是相当于火车只能从当前车厢走到下一个车厢,是无法从当前车厢走到上一节车厢的。 用c语言创建动态单链表的核心要点: 1.怎么构造单链表的基本单元? 用结构体定义一个单链表的单元,结构体里可以“储...

qq_44131760的博客 2054

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C语言——链表

链表是一种数据结构,是一种数据存放的思想;链表是一种物理存储上非连续,数据元素的逻辑顺序通过链表中的指针链接次序,实现的一种线性存储结构。

weixin_61226442的博客 5020

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

C语言学习笔记——链表

C语言学习笔记 链表 创建链表 链表是什么: 其实是多个结构体,里面存有数据和指针,其中上一个结构体的指针成员指向了下一个结构体,如此往复,就可以实现链表。 如果我们想在链表后面加入新的内容,只需要再创建(malloc)一个节点,并使之前尾部的节点中的指针指向他。 链表可以分为两种:有空头和无空头,有空头也就是第一个节点使不储存数据的,其他节点都接在他的后面,无空头的链表第一个节点存有数据...

qq_39079631的博客 829

C语言学习记录(13)链表实验题目 && 有序链表

C语言学习记录 前言 一直自己没有学习做笔记的习惯,所以为了加强自己对知识的深入理解,决定将学习笔记写下来,希望向各位大牛们学习交流! 不当之处请斧正!在此感谢!这边就先从学习C语言写起,自己本身对程序语言方面不擅长,所以决定对此从基础开始学习, 大牛们对此文可以忽略! 学校OJ实验 链表实验题目 Problem Description 链表结点的结构定义为: struct node{ int ...

Hyena__的博客 1734

C语言学习——链表

摘要:本文介绍了C语言中链表的实现与操作。链表通过结构体和指针实现,包括单链表、双向链表和循环链表等类型。相比数组,链表在追加元素时更具优势。详细讲解了链表的基本操作:插入节点(头插法、尾插法)、删除节点、遍历查找等,并分析了各操作的时间复杂度。特别说明了Linux环境下编程的注意事项,如putchar的使用差异。文章还介绍了链表的动态创建方法,包括头插法和尾插法的实现原理及优化方案。通过图示和代码示例,清晰地展示了链表操作中"断开旧连接,建立新连接"的关键过程。

weixin_55136196的博客 740

C语言 动态链表

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言项目场景:问题描述:原因分析:解决方案:一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 大家好~在学习C语言的过程中,动态链表的创建总是会把我弄得有点晕(思路是有的,但是写完代码之后就很容易出错,于是今天想把我在链表创建过程中出现的问题给大家分享一下,也希望大家以后遇到了相关问题就) 项目场景: 提示:这里简述项目相关背景: 例如:项目场景:示例:通过蓝牙芯片(HC-05)与手机 APP 通信,每隔 5s

张小婷的博客 1万+

C语言链表的笔记

在数据存储领域,数组和链表是两种重要结构。数组以连续地址存储,支持高效索引访问;链表则通过指针串联离散节点。链表借助结构体指针初始化,操作涵盖增删、遍历等,动态创建的头插、尾插法,赋予其强大的数据动态管理能力

m0_64639324的博客 836

动态创建链表

#include <stdio.h> #include <stdlib.h> //使用结构体类型,动态创建链表,查找,插入,删除 typedef struct list { int data; struct list *next; }LIST;//typedef重命名 将结构体类型命名为LIST //创建链表 LIST *creat_list() { int c; LIST *head,*s,*r; head =(LIST *)malloc(sizeof(LIST));//生成头结点

myself222的博客 856

C语言——头插法和尾插法动态创建链表

在C语言中,动态创建列表通常指的是使用链表(Linked List)这种数据结构。链表由一系列节点(Node)组成,每个节点包含数据部分和指向下一个节点的指针。根据插入节点的位置不同,链表的插入操作可以分为头插法和尾插法。下面将详细介绍这两种方法。

weixin_45720999的博客 1729
上一篇: C语言学习笔记—链表(四)链表的删除
下一篇: C语言——在Linux环境下基于Ncurse 实现贪吃蛇小游戏(一)关于Ncurse
Akzeptieren
博客等级 码龄8年 65粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值