欢迎来到天天文库
浏览记录
ID:53331240
大小:3.06 MB
页数:62页
时间:2020-04-03
《郝斌数据结构自学笔记--知识点+程序源代码.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、郝斌数据结构自学笔记--知识点+程序源代码2015.12By-HZM1_什么叫做数据结构数据结构概述定义我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法。数据结构=个体的存储+个体的关系存储算法=对存储数据的操作2_衡量算法的标准算法解题的方法和步骤衡量算法的标准1)时间复杂度:大概程序执行的次数,而非执行的时间2)空间复杂度:算法执行过程中大概所占用的最大
2、内存3)难易程度4)健壮性3_数据结构的特点数据结构的地位数据结构是软件中最核心的课程程序=数据的存储+数据的操作+可以被计算机执行的语言4_预备知识_指针_15_预备知识_指针_2指针的重要性:指针是C语言的灵魂定义:地址:地址是内存单元的编号,从0开始的非负整数,范围:0-FFFFFFFF【0-4G-1】CPU=====地址线,控制线,数据线=====内存指针:指针就是地址,地址就是指针。指针变量是存放内存单元地址的变量。指针的本质是一个操作受限的非负整数。分类:1.基本类型的指针2.指针和数组的关系变量并不一定连
3、续分配,随机分配内存。内存:内存是多字节组成的线性一维存储空间。内存的基本划分单位是字节。每个字节含有8位,每一位存放1个0或1个1.内存和编号是一一对应的。软件在运行前需要向操作系统申请存储空间。在软件运行期间,该软件所占空间不再分配给其他软件。当软件运行完毕后,操作系统将回收该内存空间(操作系统并不清空该内存空间中遗留下来的数据)。NOTE:1)指针变量也是变量,普通变量前不能加*,常亮和表达式前不能加&。2)局部变量只在本函数内部使用。如何通过被调函数修改主调函数中普通变量的值。1)实参为相关变量的地址;2)形参
4、为以该变量的类型为类型的指针变量;3)在被调函数中通过*形参变量名的形式的形式就可以修改主函数。CASE1#includeintmain(void){int*p;//p是个变量名字,int*表示该p变量只能存储int类型变量的地址inti=10;intj;//j=*p;//printf("%d",j);//error,p未指定//charch='A';//p=&ch;//error,类型不一致p=&i;//p保存i的地址,p指向i;修改p的值不影响i的值,修改i的值不影响p的值;任何场合下,*p和
5、i可以互换。*p等价于i。//p=10;//errorj=*p;//等价于j=i;printf("i=%d,j=%d,*p=%d",i,j,*p);return0;}CASE2#includevoidf(int*i)//不是定义了一个名字叫做*i的形参,而是定义了一个形参,该形参名字叫做i,它的类型是int*{*i=100;}intmain(void){inti=9;f(&i);//局部变量只在本函数内部使用。printf("i=%d",i);}指针和数字数组名:一维数组名是个指针变量,它存放
6、的是一维数组第一个元素的地址,它的值不能被改变,一维数组名指向的是数组的第一个元素。CASE1a[3]==*(3+a);3[a]==*(a+3)==*(3+a);inta[5]={1,2,3,4,5};Show_Aarry(a,5);//a等价于&a[0],&a[0]本身就是int*类型voidShow_Array(int*p,intlen){IntI;//P[2]=-1;//p[0]=*p;p[2]==*(p+2)==*(a+2)==a[2];p[i]就是主函数的a[i]for(i=0;i7、f(“%d”,p[i]);}指针变量的运算指针变量不能相加,不能相乘,不能相除。如果两指针变量属于同一数组,则可以相减。指针变量可以加减一整数,前提是最终结果不能超过指针变量p+i的值是p+i*(p所指向的变量所占的字节数)p-i的值是p-i*(p所指向的变量所占的字节数)p++<==>p+1p--<==>P-16_所有的指针变量只占4个子节用第一个字节的地址表示整个变量的地址CASE1double*p;doublex=66.6;//一个double占8个字节p=&x;//x占8个字节,1个字节是8位,1个字节一个8、地址,p内只存放了一个地址,通常是字节的首地址doublearr[3]={1.1,2.2,3.3};double*q;q=&arr[0];printf(“%p”,q);//%p实际就是以十六进制输出q=&arr[1];q=printf(“%p”,q);//p,q相差8无论指针指向的变量占多少个字节,指针变量统一都只占4个字
7、f(“%d”,p[i]);}指针变量的运算指针变量不能相加,不能相乘,不能相除。如果两指针变量属于同一数组,则可以相减。指针变量可以加减一整数,前提是最终结果不能超过指针变量p+i的值是p+i*(p所指向的变量所占的字节数)p-i的值是p-i*(p所指向的变量所占的字节数)p++<==>p+1p--<==>P-16_所有的指针变量只占4个子节用第一个字节的地址表示整个变量的地址CASE1double*p;doublex=66.6;//一个double占8个字节p=&x;//x占8个字节,1个字节是8位,1个字节一个
8、地址,p内只存放了一个地址,通常是字节的首地址doublearr[3]={1.1,2.2,3.3};double*q;q=&arr[0];printf(“%p”,q);//%p实际就是以十六进制输出q=&arr[1];q=printf(“%p”,q);//p,q相差8无论指针指向的变量占多少个字节,指针变量统一都只占4个字
此文档下载收益归作者所有