data structure 杂物间
小插曲:写作风格想渐渐地由便于理解的语言向最精简的叙述方式转变。(严谨的风格保持不变且在努力提高中:))
整理一下数据结构所涉及到的一些C
或C++
中的基础知识。
- 结构型
结构型的作用就是满足对数据类型的需求的补充,我们可以自己创造合适自己的数据类型,例如现有int
,char
等数据类型,我们可以:
1 | typedef struct |
这样就定义了一个typeA
类型的数据类型。
他的使用需要注意:typeA a[3]
这句话是定义了一个typeA
类型的数组a[]
。这个数组是由a[0]
,a[1]
,a[2]
组成,且a[0]
中由2个分别为int
,char
组成。使用a[0].a
调用。
所以,这里的a[]
可以理解为是一个二维数组了。需要理解一下。
- 使用自己定义的结构型构造结点
构造一个链表结点,分为两步:
第一步:构造出需要的结构型(链表结点的定义):
1 | typedef struct Node |
构造出一个Node
型,里面是一个int
型的数据域,一个是Node
型的指针。
第二步:构造出结点(用一个指针指向他):
1 | Node *p; |
定义了一个p
指针指向了结点,结点构造成功。结点的名字为p
,这里的第2句的意思自行google
。
如果我们想要取出这个结点的data
赋给x
,那么应该这样做:x=p->data
,或者可以这样x=(*p).data
这里主要是指针的使用注意点。
注意,这里的p
命名了两个东西:一个是结点,另一个是指向这个结点的指针。所以p
既是指针名又是结点名。
#define
和typedef
的使用
请看实例:
1 |
|
上面这个代码其实就是这个意思:
1 | bool f(int a ) |
typedef
是为变量起一个新名字,#define
则是定义一个常量,也可以理解为为常量起一个新名字。
这样的用法的意义是可以当你有多个地方的int
型的变量想要修改为char
型的时候,不要一个一个的去修改,直接将typedef int xx
改成typedef int yy
就可以一下子全部修改了。
还有需要补充的小知识点再补充。。