数据结构(5顺序表类).ppt
《数据结构(5顺序表类).ppt》由会员分享,可在线阅读,更多相关《数据结构(5顺序表类).ppt(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C/C+C/C+与数据结构与数据结构郭郭 鹏鹏城市与环境科学学院城市与环境科学学院15.顺序表类顺序表类C+预备知识发展由来输入输出内联函数、缺省函数函数重载、运算符重载引用型、布尔型C基本顺序表到C+顺序表类25.顺序表类顺序表类C+发展由来C丹尼斯里奇&肯汤普逊贝尔实验室(1973)B语言(汤普逊)C语言(里奇)C+Bjarne Stroustrup博士博士(比杨尼比杨尼斯卓司朱夫斯卓司朱夫)Cwithclass从Simula继承了类的概念,从Algol68继承了运算符重载、引用以及在任何地方声明变量的能力,从BCPL获得了/注释,从Ada得到了模板、名字空间从Ada、Clu和ML取来了异
2、常31983年两人获得了图灵奖年两人获得了图灵奖5.顺序表类顺序表类C+与C的不同C+是在扩充了C面向过程的基础上增加了面向对象的功能面向过程(C)不需要了解计算机内部逻辑,只是关注算法逻辑和过程描述,通过程序把解决问题的执行步骤告诉计算机机器语言-汇编语言-过程语言(以C为代表)面向对象(C+)一种认识世界的方法,也是一种程序设计思想客观世界由对象组成,每种对象有其内部状态和规律,不同对象联系和作用构成了不同的系统,进而构成客观世界抽象、封装、继承和多态45.顺序表类顺序表类人们能解决的问题的复杂性直接与抽象的类型和质量有关。类型:要抽象的东西汇编语言:对底层机器的小幅度抽象,命令式语言(f
3、ortran,C)是对汇编的抽象编写和维护费用高面向对象的方法为程序员提供了在问题空间中表示各种事物元素的工具。问题空间中的事物和它们在解空间中的表示称为对象。纯面向对象程序设计的基本特征万物皆对象程序就是一组对象,对象之间通过发送消息互相通知做什么每一个对象都有它自己的由其它对象构成的存储区每个对象都有一个类型一个特定类型的所有对象都能接受相同的信息55.顺序表类顺序表类输入输出流cin;cout/键盘输入,显示器输出(printf,scanf)cin.get();cout.put()/字符输入输出(getchar,putchar)cin.getline(para1,para2,para3)
4、/字符串输入(gets)输入(para2-1)个字符para3,输入的终止字符cout.write(para1,para2)/输出(puts)para1:输出字符来源;para2:输出字符个数#includevoidmain()charm20;cin.getline(m,5);/,C);coutmendl;6/“ABCFDG”/ABCF/AB5.顺序表类顺序表类内联函数使用函数的优点便于阅读、便于修改、可重用并隐藏细节缺点消耗栈内存,降低系统速度在c+中,为了解决一些频繁调用的小小函数大量消耗栈空间(栈内存)的问题,特别的引入了inline修饰符,表示为内联函数栈空间就是指放置程序的局部数据也
5、就是函数内数据的内存空间,在系统下,栈空间是有限的有限的,如果频繁大量的使用就会造成因栈空间不足所造成的程序出错的问题,函数的死循环递归调用的最终结果就是导致栈内存空间枯竭75.顺序表类顺序表类内联函数实例inlineintJudge(inti);/函数原形声明为inline即:内联函数voidmain()for(inti=1;i10;i+)couti“:”Judge(i)0?)1:0);8(i%20?)1:0)/直接替换直接替换5.顺序表类顺序表类内联函数内联函数和宏很类似,只是在需要用到的时候,内联函数像宏一样的展开,所以取消了函数的参数压栈,避免了频繁调用函数对栈内存重复开辟所带来的消耗
6、,减少了调用的开销。既然这么好?是不是都可以把函数都声明为Inline?95.顺序表类顺序表类内联函数的局限只适合函数体内代码简单的函数使用不能包含循环、条件、选择等复杂的结构控制语句,例如while/switch/for必须在声明函数的代码文件中进行函数定义真相-Truth即便你没有指定函数为内联函数,有的编译系统也会自动将很简单的函数作为内联函数处理;而对于复杂的函数,即便你指定他为内联函数,系统也不会理会的Inline只是请求请求!编译器负责实现!105.顺序表类顺序表类内联函数与宏定义的区别宏定义#define:简单的字符串替换,不考虑参数类型宏的参数替换是不经计算而直接处理的,而函数
7、调用是将实参的值传递给形参宏在编译之前进行,即先用宏体替换宏名,然后再编译的,而函数是编译之后,在执行时,才调用的.因此,宏占用的是编译的时间,而函数占用的是执行时的时间C+中基本不会使用#define,而是用const取代#define只是简单替换const会进行类型检查115.顺序表类顺序表类默认函数指带有默认参数的函数默认参数:在函数声明时就带有一个默认值,当调用该函数时,如果不给出相应的实参,则编译器将默认值赋给这个参数主要用于默认构造函数12u带有默认值的形参必须从参数列表最右边开始带有默认值的形参必须从参数列表最右边开始 连续不断列出连续不断列出void func(int x=0,
8、int y,int z=0)void func(int x=0,int y,int z=0)【】u如果函数由声明和定义两部分,默认值只能出如果函数由声明和定义两部分,默认值只能出现在函数声明中现在函数声明中5.顺序表类顺序表类函数重载三个结构中的求长基本操作Int ListSize(const SeqList*l)/基本顺序表Int QSize(const Queue*q)/基本顺序队列Int StSize(const Stack*s)/基本顺序栈如果更多结构?WhatSize?13int Size()5.顺序表类顺序表类Size函数重载Int Size(const SeqList*l)/基本
9、顺序表Int Size(const Queue*q)/基本顺序队列Int Size(const Stack*s)/基本顺序栈函数表名和函数有一处不同,就表示函数不同因为函数参数表的不同,构成了函数重载注意:如果只有返回值不同,则不能重载如果两个函数的参数个数相同且类型可隐式转换,尽量不要重载,因为会容易出现二义性void display(char a);void display(double a);Display(10)/出现二义性145.顺序表类顺序表类函数重载#includevoid display(char);void display(int);/注意匹配提升void display(c
10、har,char);void main()display(65);display(A);display(A,B);15void display(char ch)coutchendl;void display(int n)coutnendl;void display(char ch1,char ch2)coutch1tch2endl;5.顺序表类顺序表类结构的比较是非法语句p209struct studentlong ID;double g;int find(const SeqList*L,Type item)For(int i=0;i size;i+)if(L-datai=item)/非法语句
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 顺序
限制150内