说明:
当年看完《数据结构高分笔记》2014版,吸收精华后写了一份让我引以为豪的精简笔记。。。。
然而现在掉了。。。。找到不到了。。。。痛心。。。。
为了巩固数据结构,不得已再拾起这本书再过一遍。。。。
这回笔记不再写在纸上了。。。。
虽然麻烦一点,但为了以后能快速拾起基本知识还是写成在线笔记吧。。。。
第一章 绪论
数据类型
结构型
即用户自己制作的数据类型
typedef:用来给现有的数据类型起一个新名字,新名字叫TypeA
eg. typedef int ELEMTYPE;
typedef struct{
int a;
char b;
float c;
}TypeA;
指针型
int *a 如果a是个指针型变量,且它已经指向一个变量b,则a中存放变量b所在的地址
*a 就是取变量b的内容(x=*a;等价于x=b;)
&b就是取变量b的地址
a=&b就是将变量b的地址存于a中,===指针a指向b
//链表的结构型定义:
typedef struct Node{//此结构型的名字叫Node,取名的原因是为了定义结构体内部的指针型
int data;
struct Node *next;//此处的Node应与Node处一致
}Node;//若此处为A,则声明时用A a; 若此处无内容,则声明用struct Node a;
//二叉树结点的定义
typedef struct BTNode{
int data;
struct BTNode *lchild;
struct BTNode *rchild;
}BTNode, *btnode;// BTNode *p = btnode p; 一般可不用写*btnode
//制作二叉树的节点+动态申请数组空间
(1) BTNode BT; //BT就是某个结点的名字,不可再更改
(2) BTNode *BT; //BT是指针型变量,用以存储刚制作好的结点的地址
(2) BT = (BTNode*)malloc(n * sizeof(BTNode)); //一次申请一组长度为n的结点
取分量操作时:
(1) x = BT.data; 结构体变量 取分量,其操作用 “.”
(2) x = BT->data; 指向 结构体变量 的指针 取分量,其操作用 ”->”
x =
(*BT).data;
将(2)中BT转成 结构体变量
取分量
,
就可以用
“.”
函数
//使用引用型对普通变量进行改变
void f(int &x){
++x;
}
//若传入的变量是 指针型变量
void f(int *&x){
++x;
}
//只要数组作为参数,都是引用型的
//一维数组作为参数的函数声明方法
void f(int x[],int n){
.....
}
//二维数组作为参数的函数声明方法
void f(int x[][maxSize],int n){//所传入的数组第二维长度也要是maxSize。
..... //
int a[10][5] f(a);
int b[10][3] f(b);
}
时间复杂度
时间复杂度常用的比较关系:
O(1)<O(log2(n))<
O(n)<
O(n
log2(n)
)<
O(n2)<
O(n3)<
O(nk)<
O(2n)