【数据结构】开端序幕

news2025/1/19 3:36:30

写在前面,感同身受

初学数据结构,是不是一脸懵,下面你中招了几条?😭

  • 怎么全是指针!指针都不会啊!

  • 怎么变量名那么长,好难理解啊!

  • 什么p,什么next,p=p->next究竟是什么意思!

  • 结构体的类型和变量的概念太容易弄混,为什么要用typedef!

  • Status,ElemType是一种像int,float类型吗!

  • 为什么能return ERROR ,OK这样的东西!

  • 函数传参,一会儿带*,一会儿不带*,一会儿带&,好疑惑!

  • 有些代码一会用C,一会儿用C++,好难懂!

  • 有些课讲代码是伪码,不能运行,好难受!

这些痛点徘徊在像我们这样的初学者身边,如果你被上面的问题困扰着,那么看这篇文章就是正确的。当然前提是你得学完C语言,

2023,开篇之作,用上CSDN新版编辑器(好用),我决定写一个数据结构专栏来记录我的学习过程,同时来帮助和我一样有相似困难的同学们共同进步。


写在中间,指点迷津

一、为什么数据结构都用指针?

为了方便传递地址所以有了指针,指针也是一个变量,只不过里面存的内容是一个地址。为了方便操作,提升效率,我们逐渐都将要实现的功能用函数封装起来。指针就起到了它的作用

至于涉及到代码的部分,我们就放到具体的章节中去讲解, 本篇文章就先讲一个typedef的用法

二、为什么变量名字那么长?

其实,我们定义变量名字的时候,通常要尽可能明确的传达这个函数的功能,比如

GetElem就是功能+对象,主要用于查找元素,记住一些常见的缩写也是有益的,多读代码,见多识广

常见缩写

ret

return

返回

add

addition

sub

subtraction

mul

multiplication

乘法

div

division

除法

Seq

Sequence

序列

queue

queue

队列

row

row

col

column

pt

point

ptr

pointer

指针

index

index

索引、指示

cur

current

当前的

temp或tmp

temporary

临时

三、为什么要使用typedef?

当然是为了简单了,我们定义一个结构体,你能说出两者的区别吗?(先不要管代码中的 ElemType,MAXSIZE,我们下一篇文章讲解)

//使用typedef
typedef struct SqList
{
    ElemType data[MAXSIZE];
    int length;
}SqList;
SqList L;

//不使用typedef
struct SqList
{
    ElemType data[MAXSIZE];
    int length;
}SqList;

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
//使用typedef
typedef struct SqList
{
    ElemType data[MAXSIZE];
    int length;
}SqList,SqList_1,SqList_2;

//不使用typedef
struct SqList
{
    ElemType data[MAXSIZE];
    int length;
}SqList,SqList_1,SqList_2;

分界线以上

  • 前者,把类型名struct SqList重命名为SqList,这样就能起到简化的作用,这样我们定义变量L的时候就可以写成SqList L;而不用写成struct SqList L;

  • 后者,把就是正常的结构体,类型是struct SqList,并且直接就定义了一个变量SqList,当然有点误导大家的意思,所以谁拿SqList当变量名?

分界线以下

  • 前者,SqList,SqList_1,SqList_2都是类型名,对你没听错,都是类型名,定义变量的时候你就可以这样写SqList_1 L; SqList_2 L;两者表示的意义相同

  • 后者,SqList,SqList_1,SqList_2都是变量名,当然你把SqList,SqList_1,SqList_2,换成短一点的变量名的话就更好了


写在最后

好了本篇文章就到这里结束了,下一篇文章,我们来学习线性表👉👉 👈👈

👍🏻 点赞,你的认可是我创作的动力!
收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!

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

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

相关文章

LeetCode[1753]移除石头的最大得分

难度:中等题目:你正在玩一个单人游戏,面前放置着大小分别为 a、b和 c的 三堆 石子。每回合你都要从两个 不同的非空堆 中取出一颗石子,并在得分上加 1分。当存在 两个或更多 的空堆时,游戏停止。给你三个整数 a、b和 c…

动手深度学习-多层感知机

目录感知机多层感知机激活函数sigmoid函数tanh函数ReLU函数多层感知机的简洁实现参考教程:https://courses.d2l.ai/zh-v2/ 感知机 模型: 感知机模型就是一个简单的人工神经网络。 感知机是二分类的线性模型,其输入是实例的特征向量&#x…

智慧管廊智能化运维管理平台详情

运维管理平台 ​ 平台主界面完成各分系统情况的全局性展现,用图形界面的方法提升视觉效果感染力,根据图色区分正常、异常情况。 1、自然环境及设备监控 ​ 选用全景分层三维可视化地理信息系统及其多元化的二维在线地图从温度、风速、电力、排水、安防…

windows检测远程主机是否连通或者某个端口是否开启

文章目录一、检测主机是否连通步骤二、测试端口是否打开步骤telnet安装一、检测主机是否连通 ping命令是个使用频率极高的网络诊断工具,在Windows、Unix和Linux系统下均适用。它是TCP/IP协议的一部分,用于确定本地主机是否能与另一台主机交换数据报。根…

2022年度总结 EXI-小洲

文章目录一、第一次自我介绍二、2022我都干了些什么(我的收获)1.大专顺利毕业2.后端开发辞职3.第二次代表学校参加江西省职业院校大数据技能大赛4.专升本考试5.参加泰迪杯第五届"数据分析技能赛"6.在csdn开始写博文7.在本科阶段,我又认识了几个会喝点酒的…

【2022年度总结】总结过去,展望未来

文章目录前言回顾过去一、刷题道路两眼黑二、助人为乐本身便是一种快乐展望未来兔年Flag博客文章竞赛目标学习目标志同道合前言 注册CSDN一年了,新年伊始,正好趁着这个时间复盘一下逝去的2022! 很幸运,在对计算机知识懵懂无知的时…

分布式调度XXL-JOB急速入门

文章目录1.业界分布式定时任务框架简介2.分布式调度XXL-JOB核心特性3.Docker部署MySQL8.04.XXL-JOB数据库脚本介绍5.Docker部署XXL-JOB服务端6.XXL-JOB UI菜单模块介绍7.SpringBoot整合XXL-JOB8.分布式调度参数传递9.分布式调度日志埋点10.自定义返回执行成功或失败11.XXL-Job高…

C#上位机基础学习_基于SOCKET实现与PLC服务器的TCP通信(二)

C#上位机基础学习_基于SOCKET实现与PLC服务器的TCP通信(二) 测试软件: TIA PORTAL V15.1 S7-PLCSIM ADVANCED V3.0 Visual Studio 2019 在上次的分享中,我们了解了TIA博途一侧的具体组态配置,具体内容可参考以下链接中的内容: C#上位机基础学习_基于SOCKET实现与PLC服务…

【ROS】—— 机器人系统仿真 —URDF优化_xacro (十四)

文章目录前言1. URDF优化_xacro2. Xacro_快速体验3. Xacro_语法详解3.1 属性与算数运算3.2 宏3.3 文件包含4. Xacro_完整使用流程示例4.1 编写 Xacro 文件4.2 集成launch文件5. Xacro_实操前言 📢本系列将依托赵虚左老师的ROS课程,写下自己的一些心得与笔…

SpringBoot自动配置原理

1、自动配置原理 1、我们编写的SpringBoot启动类上有一个SpringBootApplication注解,表示当前类是springboot的启动类(入口类)。 package com.baidou;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBo…

微信小程序2.9.0基础库canvas2D新API,生成海报保存到手机功能实现

canvasToTempFilePath的官方文档写着在 draw()回调里调用该方法才能保证图片导出成功。文档地址:wx.canvasToTempFilePath(Object object, Object this) | 微信开放文档 我在这里面使用的canva 获取canvas实例,使用的官方的代码。用一个变量canvas保存实…

聊聊 AI 平台存储方案和选型

最近火爆全网的 ChatGPT 再次带来一股 AI 热潮。 过去的五年,AI 快速发展并应用到很多领域中。作为一家存储企业,我们也感受到了 AI 行业的活力,和我们交流团队中,AI 企业越来越多,有自动驾驶、蛋白质结构预测、量化投…

【HTML】【消失的花木兰】花木兰:三兔蹦迪走,安能辨我是兔子?

前言 (改编)  某日,参军后的花木兰刚回到家乡,却不料遇上抓拿自己的官兵… 因此,花木兰变成兔子躲了起来,你能否找到躲起来的花木兰呢?一起来拭目以待… 一、游戏名称与游戏规则&#xff08…

joinquant量化数据精准吗?

在股票量化投资中,joinquant量化数据起到很大的作用,因为joinquant量化平台的数据能够从众多只股票数据中,能够一一罗列出来,也就是说,joinquant量化数据可以在计算和分析数据模型中,能够帮助投资者找到他们…

【SpringBoot1】创建第一个SpringBoot项目

创建SpringBoot项目可以通过两种方式: 1、通过访问:https://start.spring.io/,SpringBoot的官方网站进行创建SpringBoot项目; 2、通过工具(例如:Idea)创建SpringBoot项目。本次使用IDEA创建第一…

数据结构进阶 红黑树

作者:小萌新 专栏:数据结构进阶 作者简介:大二学生 希望能和大家一起进步! 本篇博客简介:介绍高阶数据结构: 红黑树 红黑树红黑树的概念红黑树的性质红黑树节点的定义红黑树的插入情况一情况二情况三红黑树的验证红黑…

远程监控网络摄像头通用指南

一、引言 随着物联网技术的发展,越来越多的场景需要我们通过技术手段去感知。画面和声音相当于机器的眼睛和耳朵,有了这些实时数据我们可以做很多事情,比如车牌识别、人脸识别、体温识别等等。本文将全方位介绍网络摄像头如何接入软件的实现…

2022.12 青少年机器人技术等级考试理论综合试卷(四级)

2022年12月 青少年机器人技术等级考试理论综合试卷(四级) 分数: 100 题数: 30 一、 单选题(共 20 题, 共 80 分) 1.以下关于 Arduino C 语言的说法, 正确的是?( ) A.setup() 函数和…

SpringMVC Interceptor拦截器

SpringMVC中的拦截器用于拦截控制器方法的执行,执行在Controller前后,和视图渲染完成后。如下图所示: 一、创建拦截器 继承HandlerInterceptor 接口,并实现其中的方法 public class FirstInterceptor implements HandlerInter…

儿子小伟刚刚再婚,大衣哥就河南新乡商演,这是给孙子攒奶粉钱吗

现如今的社会,因为人们的攀比心理,结一次婚能让人脱一层皮,尤其是农村赚钱难,结婚花钱就更难了。其实不只是普通老百姓,强如农民歌唱家大衣哥这样的人,也架不住儿子一而再,再而三的结婚。 大衣哥…