一:数据类型
比较重要的是结构型和指针型
1、结构型:
简单的说就是自己制作的数据类型,用系统已有的基本数据类型或用户定义的结构型组合成我们需要的复杂数据类型。也就是结构体
2、指针型:
指针型变量内部装的是变量的地址,而非内容。
若a = &b,则是指针a指向b,*a就是取变量b的内容,&b就是取变量b的地址
二:结点构造
主要就是链表节点和二叉树节点
这两个其实挺好区别,链表节点的结构体中有一个指向和自己类型相同的变量的指针,这个指针其实是指向下一个节点,而二叉树节点的结构体内部一般有两个指针,分别指向左孩子和右孩子。
链表: 二叉树:
typedef struct NODE typedef struct BTNode
{ {
int date; int date;
struct NODE *next;//指向NODE型变量的指针 struct BTNode *lchild;
}NODE; struct BTNode *rchild;
}BTNode,*btnode;
那么如何创建一个新的节点呢?
BTNode *BT
BT = (BTNode*)malloc(sizeof(BTNode));//先定义了一个节点的指针,然后让这个指针指向malloc申请的这片内存空间
*动态申请数组的方式与这个基本类似
若想取其data域的值赋给x,应该x = BT -> data;
用结构体变量直接取分量,其操作用“.”,用指向结构体变量的指针来取分量,其操作用“->”
三:关于typedef和#define
typedef其实就是给现有的数据结构起一个新名字的,之后可直接用这个新名字来定义新的变量
#define一般就是宏定义,了解即可