面向数据结构C基础知识点(个人向)
如何定义并初始化一个变量:
int b = 1;
int b,c,d = 2;
指针型:是用来指示方向的,用来存储地址
int *p1 = &A; 取A的地址,然后赋值给指针p1
int *p2 = &B;
int *p3 = &C;
p1 = &D; 取D的地址,然后赋值给p1,也就是说p1指向D
E = *p1; 取p1这个地址的值,然后赋值给E
NULL是不指向任何地址的特殊标记,其值为0,初始化指针的时候常用,如 int *p4 = NULL;
构造类型
数组:相同类型的变量排成一列所构成的变量集。
int B[100]; // 长度为100,存储范围是0~99,通俗理解是一下子定义了100个整型变量
int A[5] = {1,2,3,4,5}; // 数组的初始化操作
a = A[0]; // a的值为9
A[3] = b; // A[3]与b存值相同。
需要将不同类型变量组合在一起来解决问题。
School_name;
School_Address;
School_Area;
typedef struct{
int a;
float b;
... ...
}结构体名;
typedef struct 结构体名
{
int a;
float b;
struct 结构体名 *d;
... ...
}结构体名;
void:在考研数据结构中,主要用来定义没有返回值的函数
控制语句:
判断语句
if判断
a == b / a+b / 1+1 / !a / 变量或者字面值
注意:上面的一切,结果为0表示假,非0表示真,真则进入if块,否则有else块则进入else块
循环语句
for循环/while循环
函数:
返回值类型 函数名(参数定义列表)
{
... ...
}
调用方法:函数名(参数列表);
int result = 0;
void getResult(int &r){
r++;
}
// r是形参,存在函数体内的变量,先执行把result赋值给r,然后执行r的自增操作,所以改变的是r而不是result。所以为了result替换r,所以需要在形参r前加一个引用符(&),也叫作引用型定义,这种定义方法只针对基本类型变量,结构型变量。
链式存储的C语言实现
typedef struct LNode{
int data; //代表这个节点当中所存储的数据
struct LNode *next; //指向下一个节点的指针
}LNode;
LNode *L;
L = (LNode*)malloc(sizeof(LNode));
/*
节点空间动态分配的方式,它会根据你的指定给你分配一个合适大小的空间,然后给你返回这个空间的地址;
malloc需要输入一个参数,这个参数就是你需要分配空间的大小;
sizeof运算符,会给你计算出结构体类型所需要占用的存储空间的大小;
这个malloc所返回的指针类型,需要你设置的节点类型进行一次强制类型转换之后再赋值给你所定义的指针
注意:用malloc制造出来的结点没有名字,只有一个结点的地址,每次构造新结点都需要定义一个指针来指向,否则会丢失
*/
A->next = B; B->next =c;//箭头符号:通过指向某个结构体的指针,来取这个结构体当中的分量,不能用点,只能用箭头符号
顺序结构与链式结构的对比:
顺序存储结构支持随机存取
通俗理解:线性表的顺序存储结构可以通过线性表的首址加偏移的方法计算出来第i个数据的位置a+i*sizeof(单个结构)而线性表的链式存储结构要访问第i个数据,就必须先访问前面的[i-1]个数据