线性结构
连续存储【数组】
离散存储【链表】
线性结构的两种常见应用:栈,队列
衡量算法的标准:
1.时间复杂度:大概程序要执行的次数,而非执行的时间
2.空间复杂度:算法执行过程中大概所占用的最大内存
3.难易程度
4.健壮性
数据结构的地位:
数据结构是软件中最核心的课程
程序=数据的存储+数据的操作+可以被计算机执行的语言
#includevoid Show_Array(int *p,int len)//a为取地址,5长度{ p[0] = -1;//p[0] == *p}int main(void){ int a[5] = { 1,2,3,4,5}; Show_Array(a,5);// a等价于&a[0],&a[0]本身就是int *类型 printf("%d\n",a[0]); return 0;}
预备知识:
指针
int * p;//p是个变量名字,int * 表示p变量只能存储int类型变量的地址
定义
地址:内存单元的编号
从0开始的非负整数 范围0-----4G-1
指针:指针就是地址,地址就是指针
指针变量是存放内存单元地址的变量
指针的本质是一个操作受限的非负整数
注意:
1.指针变量也是变量,只不过它存放的不能是内存单元的内容,只能存放内存单元地址
2.普通变量前不能加*
3.常量和表达式前不能加& (&是取地址符)
下标和指针的关系: a[i] 《==》 *(a+i)
结构体
动态内存的分配和释放