初出茅庐的小李博客之链表知识2

news2024/11/25 1:48:30

链表知识点2

通过malloc函数动态创建节点:

    #include <stdio.h>
#include <stdlib.h>


typedef struct List Node_t;

struct List
{
	/*数据区域有两个变量*/
	int a;
	float b;
	/*地址区域有一个指针*/
	Node_t* pNext;
};

Node_t Head_Node; //表头变量 
Node_t Body_Node; //表身变量 
Node_t Tail_Node; //表尾变量


int Node_Count = 0;//节点计数变量

//动态分配一个节点的空间 使用malloc函数
int main(void)
{
	
	Node_t* pHead = NULL;//头节点指针
	Node_t* pBody = NULL;//身体节点指针
	Node_t* pTail = NULL;//尾节点指针
	Node_t* pTemp = NULL;//临时节点指针

	pHead = (Node_t*)malloc(sizeof(Node_t));
	pHead->a = 1;
	pHead->b = 1.0;

	pBody = (Node_t*)malloc(sizeof(Node_t));
	pBody->a = 2;
	pBody->b = 2.0;

	pHead->pNext = pBody;//头节点里面存的地址是下一个节点

	pTail = (Node_t*)malloc(sizeof(Node_t));
	pTail->a = 3;
	pTail->b = 3.0;

	pBody->pNext = pTail;//身体节点里面存的地址是下一节点
	pTail->pNext = NULL;//尾部节点里面存的地址是NULL 下一个没了

	//访问各个节点 通过头节点
	pTemp = pHead;
	while (pTemp!= NULL)
	{
		Node_Count++;
		printf("节点 %d 的信息:\r\n", Node_Count);
		printf(" int %d\r\n float %f\r\n Node_t* %p\r\n", pTemp->a, pTemp->b, pTemp->pNext);
		pTemp = pTemp->pNext;
	}
	
}


运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8I29WtZ0-1688560915912)(C:\Users\23206\AppData\Roaming\Typora\typora-user-images\image-20230705200013220.png)]

对代码进行优化改进:

#include <stdio.h>
#include <stdlib.h>

typedef struct List Node_t;

struct List
{
	/*数据区域有两个变量*/
	int a;
	float b;
	/*地址区域有一个指针*/
	Node_t* pNext;
};


int Node_Count = 0;//节点计数变量

//动态分配一个节点的空间 使用malloc函数
int main(void)
{
	Node_t* pHead = NULL;//头节点指针
	Node_t* pTemp = NULL;//临时节点指针
	Node_t* qTemp = NULL;//临时节点指针


	pHead = (Node_t*)malloc(sizeof(Node_t));
	pHead->a = 1;
	pHead->b = 1.0;
	pTemp = pHead;//头节点的地址赋值给临时节点指针


	qTemp = (Node_t*)malloc(sizeof(Node_t));
	qTemp->a = 2;
	qTemp->b = 2.0;
	pTemp->pNext = qTemp;//新开辟的节点是下一个节点 将值给临时节点的下一个节点地址
	pTemp = qTemp;//临时节点拿到第二个节点地址


	qTemp = (Node_t*)malloc(sizeof(Node_t));
	qTemp->a = 3;
	qTemp->b = 3.0;
	pTemp->pNext = qTemp;//新开辟的节点是下一个节点 将值给临时节点的下一个节点地址
	pTemp = qTemp;//临时节点拿到第三个节点地址



	pTemp->pNext = NULL;//第三个节点是最后一个节点 没有下一节点

	//通过头节点 访问各个节点 
	pTemp = pHead;
	while (pTemp!= NULL)
	{
		Node_Count++;
		printf("节点 %d 的信息:\r\n", Node_Count);
		printf(" int %d\r\n float %f\r\n Node_t* %p\r\n", pTemp->a, pTemp->b, pTemp->pNext);
		pTemp = pTemp->pNext;
	}
	
}

运行结果:

在这里插入图片描述

通过循环结构添加节点:

添加节点的核心逻辑:

在这里插入图片描述

改成循环

	while(1)
	{
		Node_Count++;
		printf("第%d 的信息:\r\n", Node_Count);
		qTemp = (Node_t*)malloc(sizeof(Node_t));
		printf("节点整型数据:");
		scanf("%d", &qTemp->a);
		printf("节点浮点数据:");
		scanf("%f", &qTemp->b);
		pTemp->pNext = qTemp;//新开辟的节点是下一个节点 将值给临时节点的下一个节点地址
		pTemp = qTemp;//临时节点拿到当前这个节点的地址


		printf("继续添加节点按【Y】,【其他键】退出申请节点\r\n");
		if (getch() != 'Y')
		{
			break;
		}
	}

通过循环结构添加节点代码实现:

#define _CRT_SECURE_NO_WARNINGS
//可以使用scanf_s代替scanf
//但是不建议使用scanf_s因为scnaf_s不是C函数,而是VS中自带的函数。
//使用它可能会造成跨平台的问题 解决办法是添加宏定义(第一行)
#include <stdio.h>
#include <stdlib.h>


typedef struct List Node_t;

struct List
{
	/*数据区域有两个变量*/
	int a;
	float b;
	/*地址区域有一个指针*/
	Node_t* pNext;
};


int Node_Count = 0;//节点计数变量

//动态分配一个节点的空间 使用malloc函数
int main(void)
{
	Node_t* pHead = NULL;//头节点指针
	Node_t* pTemp = NULL;//临时节点指针
	Node_t* qTemp = NULL;//临时节点指针


	pHead = (Node_t*)malloc(sizeof(Node_t));
	pHead->a = 1;
	pHead->b = 1.0;
	pTemp = pHead;//头节点的地址赋值给临时节点指针
	printf("头节点创建成功\r\n");
	Node_Count++;
	while(1)
	{
		Node_Count++;
		printf("第%d 的信息:\r\n", Node_Count);
		qTemp = (Node_t*)malloc(sizeof(Node_t));
		printf("节点整型数据:");
		scanf("%d", &qTemp->a);
		printf("节点浮点数据:");
		scanf("%f", &qTemp->b);
		pTemp->pNext = qTemp;//新开辟的节点是下一个节点 将值给临时节点的下一个节点地址
		pTemp = qTemp;//临时节点拿到当前这个节点的地址


		printf("继续添加节点按【Y】,【其他键】退出申请节点\r\n");
		if (getch() != 'Y')
		{
			break;
		}
	}
	Node_Count = 0;
    /*
	
	qTemp = (Node_t*)malloc(sizeof(Node_t));
	qTemp->a = 2;
	qTemp->b = 2.0;
	pTemp->pNext = qTemp;//新开辟的节点是下一个节点 将值给临时节点的下一个节点地址
	pTemp = qTemp;//临时节点拿到第二个节点地址

	qTemp = (Node_t*)malloc(sizeof(Node_t));
	qTemp->a = 3;
	qTemp->b = 3.0;
	pTemp->pNext = qTemp;//新开辟的节点是下一个节点 将值给临时节点的下一个节点地址
	pTemp = qTemp;//临时节点拿到第三个节点地址
	*/

	pTemp->pNext = NULL;//第三个节点是最后一个节点 没有下一节点

	//通过头节点 访问各个节点 
	pTemp = pHead;
	while (pTemp!= NULL)
	{
		Node_Count++;
		printf("节点 %d 的信息:\r\n", Node_Count);
		printf(" int %d\r\n float %f\r\n Node_t* %p\r\n", pTemp->a, pTemp->b, pTemp->pNext);
		pTemp = pTemp->pNext;
	}

	return 0;

}


运行效果:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/721166.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT与Excel结合_编写VBA宏

先来解释下什么是Excel vba宏 ⭐Excel VBA宏&#xff08;Visual Basic for Applications&#xff09;是一种用于在Microsoft Excel中自动化和扩展功能的编程语言。VBA允许用户编写自定义的脚本或宏&#xff0c;以便通过执行一系列指令来自动完成特定任务。 使用Excel VBA宏&a…

分布式——监控平台zabbix的认识与搭建

作为一个运维&#xff0c;需要会使用监控系统查看服务器系统性能、应用服务状态和网站流量指标等&#xff0c;利用监控系统的数据去了解网站上线发布的结果和健康状态。 利用一个优秀的监控软件&#xff0c;我们可以: ●通过一个友好的界面进行浏览整个网站所有的服务器状态 ●…

自学软件测试

自学软件测试体系&#xff08;1&#xff09; 前言&#xff1a;很多小伙伴想要自学软件测试课程走上测试工程师道路&#xff0c;基于此目的给出想要自学软件测试的一些小伙伴一些学习的方向。软件测试工程师的职业发展方向包括功能测试&#xff0c;自动化测试&#xff0c;专项测…

【Ubuntu学习MySQL——报错 ERROR 2002 (HY000)】

问题&#xff1a; 报错含义&#xff1a; 根据上面的报错&#xff0c;意思是说mysql想使用/var/run/mysqld/mysqld.scok文件&#xff0c;但是无法连接&#xff0c;接下来我们来看看这个文件是否存在 1.查看所有的sock文件 sudo find / -type s 根据上述命令所得出的结果可以知…

【REST规范】JAX-RS有哪些实现

JAX-RS是JAVA EE6 引入的一个新技术。 JAX-RS即Java API for RESTful Web Services&#xff0c;是一个Java 编程语言的应用程序接口&#xff0c;支持按照表述性状态转移&#xff08;REST&#xff09;架构风格创建Web服务。JAX-RS使用了Java SE5引入的Java注解来简化Web服务的客…

electron应用重启,开机自启动(electron开发常用的方法、优化方案)

文章目录 electron应用重启electron开机自启动To run a local app, execute the following on the command line: electron应用重启 获取应用软件的安装路径electron中屏幕全屏&#xff0c;最大化&#xff0c;最小化&#xff0c;恢复electron启动白屏时间过长优化方案1. 按需加…

web测试需要注意几个非常重要的测试点

微软语言标准&#xff1a; 全角字符和半角字符都要使用一个空格分开 英文和数字直接要有空页面分辨率&#xff1a; 通常是计算机的默认分辨率&#xff0c;但是还是会有一些老式电脑存在1024*768的情况 浏览器的兼容性&#xff1a; 目前市场上的主流浏览器&#xff1a;IE8.0-…

Kubernetes入门实战课-k8s的基本架构

Kubernetes入门实战课-k8s的基本架构 文章目录 Kubernetes入门实战课-k8s的基本架构Kubernetes 的基本架构标准工作语言 YAML学习经验总结 Kubernetes 的基本架构 Kubernetes 扮演的角色就如同一个“大师级别”的系统管理员&#xff0c;具有丰富的集群运维经验&#xff0c;独创…

Java多线程基础-10:代码案例之定时器

定时器就是一个闹钟。它可以设定一个时间&#xff0c;当时间到&#xff0c;就可以执行某个指定的代码。 定时器是实际开发中的一种非常常用的组件。比如网络通信中&#xff0c;如果对方 500ms 内没有返回数据&#xff0c;则要求断开连接尝试重连&#xff1b;又比如一个 Map&…

华为OD机试真题 Python 实现【网上商城优惠活动(一)】【2022 Q4 100分】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、补充说明五、Python算法源码六、效果展示1、输入2、输出3、说明 一、题目描述 某网上商城举办优惠活动&#xff0c;发布了满减、打折、无门槛3种优惠券&#xff0c;分别为&#xff1a; 1.每满100元优惠10元&#xff0c;无使用数…

测试开发 —— 快速定位问题

写在前面 这两天工作实在是有点小忙&#xff0c;感觉好久没更新了&#xff0c;但是平时也是有感而发的比较多&#xff0c;今天遇到一个问题&#xff0c;感觉挺有意思&#xff0c;处理过程也非常有意义&#xff0c;希望能给大家一个借鉴吧。 测试平台又又又出问题了 今天一位…

ARM_cortex-A7核UART总线

实验一&#xff1a;键盘输入一个字符a,串口工具显示b‘ 实验二&#xff1a;实现现象&#xff1a;键盘输入一个字符串&#xff0c;串口工具回显输入的字符串 uart4.h #ifndef __UART4_H__ #define __UART4_H__#include "stm32mp1xx_gpio.h" #include "stm32m…

vue+relation-graph绘制关系图实用组件

先在终端执行命令 vue create relationgraph创建一个vue2的项目 然后在编辑器中打开新创建的项目 在终端中执行命令 npm install relation-graph --save引入依赖 这样 我们relation-graph就进来了 然后 我们在需要使用的组件中编写代码如下 <template><div>&…

【HTML5+Springboot】农产品质量溯源大数据管理系统源码

一、前言 1.技术框架说明 开发工具&#xff1a;idea或eclipse前端框架&#xff1a;easyui &#xff0c;开发语言&#xff1a;java后端框架&#xff1a;spring bootmybatismysql数 据 库&#xff1a;mysql移 动 端&#xff1a;h5(扫码溯源)技术架构&#xff1a;spring bootmyb…

React Dva项目引入antd UI框架

上文 React 搭建DvaJS开发环境中我们大家了一个Dva的开发环境 那么 下面 我们就用dva项目引入一下antd 我们平时做react开发 主要也都会选择它 我们直接在项目终端执行 npm install antd^4.24.2 babel-plugin-import --save这样 我们的依赖包就进来了 babel-plugin-import是…

【精致的美少女-InsCode Stable Diffusion 美图活动一期】

&#x1f4a7; 【精致的美少女 − I n s C o d e S t a b l e D i f f u s i o n 美图活动一期】 \color{#FF1493}{【精致的美少女-InsCode Stable Diffusion 美图活动一期】} 【精致的美少女−InsCodeStableDiffusion美图活动一期】&#x1f4a7; &#x1f337; 仰望…

青岛大学_王卓老师【数据结构与算法】Week04_07_双向链表的删除_学习笔记

本文是个人学习笔记&#xff0c;素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享&#xff0c;另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权&#xff0c;请留言作删文处理。 课程视频链接&#xff1a; 数据结构与算法基础–…

Standalone是什么?Standalone集群的三类进程

Standalone是什么 Standalone模式是Spark自带的一种集群模式&#xff0c;不同于前面本地模式启动多个进程来模拟集群的环境&#xff0c;Standalone模式是真实地在多个机器之间搭建Spark集群的环境&#xff0c;完全可以利用该模式搭建多机器集群&#xff0c;用于实际的大数据处…

面向订单交付的ETO项目管理数字化解决方案︱高远科技PMO副总经理董方好

北京高远华信科技有限公司PMO副总经理董方好先生受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾&#xff0c;演讲议题&#xff1a;面向订单交付的ETO项目管理数字化解决方案。大会将于8月12-13日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1a; 订单…

机器学习洞察 | JAX,机器学习领域的“新面孔”

在之前的《机器学习洞察》系列文章中&#xff0c;我们分别针对于多模态机器学习和分布式训练、无服务器推理进行了解读&#xff0c;本文将为您重点介绍 JAX 的发展并剖析其演变和动机。下面&#xff0c;就让我们来认识一下 JAX 这一新崛起的深度学习框架—— 亚马逊云科技开发…