写在前面,感同身受
初学数据结构,是不是一脸懵,下面你中招了几条?😭
怎么全是指针!指针都不会啊!
怎么变量名那么长,好难理解啊!
什么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,换成短一点的变量名的话就更好了
写在最后
好了本篇文章就到这里结束了,下一篇文章,我们来学习线性表👉👉 👈👈
👍🏻 点赞,你的认可是我创作的动力!
⭐ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!