1 / 17

小班化教学 研究性教学方法 教学网站 kczy.zjut/sjjg 教学计划安排 数据结构学习方法 理论+实践(编程)

序言. 小班化教学 研究性教学方法 教学网站 http://kczy.zjut.edu.cn/sjjg 教学计划安排 数据结构学习方法 理论+实践(编程). 序言. 数据结构课程 唐纳德 • 克努特 (Donald Ervin Knuth) :数据结构和算法的奠基者,鼻祖。 - 29 岁提出 “ 算法 ” (Algorithm) 和 “ 数据结构 ” (Data Structure) 这两个概念( 1967 年) - 36 岁获得计算机图灵奖( 1974 年) -巨著: The Art of Computer Programming

nasim-sears
Download Presentation

小班化教学 研究性教学方法 教学网站 kczy.zjut/sjjg 教学计划安排 数据结构学习方法 理论+实践(编程)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 序言 • 小班化教学 • 研究性教学方法 • 教学网站 http://kczy.zjut.edu.cn/sjjg • 教学计划安排 • 数据结构学习方法 理论+实践(编程)

  2. 序言 数据结构课程 • 唐纳德•克努特(Donald Ervin Knuth):数据结构和算法的奠基者,鼻祖。 -29岁提出“算法”(Algorithm)和 “数据结构”(Data Structure)这两个概念(1967年) -36岁获得计算机图灵奖(1974年) -巨著:The Art of Computer Programming 第一卷《基本算法》介绍了数据的逻辑结构和存储结构及其操作   离散数学:面向数据本身的数学性质;   数据结构:更面向数据的存储结构; • 国外数据结构课程始于1968年; • 教材:《数据结构与算法分析》C++语言描述 http://cs.calvin.edu/books/c++/ds教材源代码

  3. 3 Main Index Contents Lecture 1 – Introduction to Data Type and Data Structure • Simple Data Type in C++ • -Integer • -Float,double • -char • -boolean • pointerVariable • Complex Data Type in C++ • -Static Array(one-dimensional array, two-dimensional array) • -Dynamic Array • Data Structure • ADT • Classes

  4. Lecture 1 – Introduction to Data Type and Data Structure 4 Main Index Contents • 1.Unsigned integers • unsigned short, unsigned, unsigned long (8bit, 1 字节) •   存储采用二进制0和1 • 2.Signed integers • short, int, long(2,4字节) • 3.Float, Double • 22.625 = 10110.1012 • 4.Floating point form: 1.01101012 * 24 • 小数基本无法精确表示,如 • 0.7 = (0.10110011001100110011001100. . .)2 • 由存储带来的误差叫做舍入误差,可产生累计误差

  5. Lecture 1 – Introduction to Data Type and Data Structure 5 Main Index Contents • 1.01101012 * 24 • 32位中1位是符号位,8为带符号指数,23为小数位 • 8位带符号指数,即可达到-127~+127 • 2-127~ 2127即1.7*10-38~ 1.7*1038

  6. Lecture 1 – Introduction to Data Type and Data Structure 6 Main Index Contents • 5.Char字符 • 1 byte(8 bits) for ASCII—28=256 • 2 bytes(16 bits) for Unicode (java) or C++ wide character type • 6. Boolean • 0 or 1 (false or true) • 7. programmer-defined type • typedef double real; • 8. Enum 枚举类型

  7. Lecture 1 – Introduction to Data Type and Data Structure 7 Main Index Contents • 9.Pointers指针 • 不同数据类型所占用空间不同,指向不同类型数据的指针所访问的地址空间范围不同; • 指针本身是内存空间地址; • 对指针*操作(间接引用运算符,取值操作)则访问指针所指向内存地址中的数据;

  8. Lecture 1 – Introduction to Data Type and Data Structure 8 Main Index Contents • int * iptr,*jptr; • int i=11, j=22; • *iptr=i,*jptr=j; • jptr=iptr; //指向同一个数据空间; • *jptr=44; • int * intPtr; • intPtr = new int;//一般简单数据类型不使用new分配

  9. Lecture 1 – Introduction to Data Type and Data Structure 9 Main Index Contents • Complex Data Type in C++ • 1. Static Array(one-dimensional array, two-dimensional array) • int a[10]; • char name[10]=“John Doe”; //char name[]=“John Doe”; • two-dimensional array: • float scoresTable[30][5];

  10. Lecture 1 – Introduction to Data Type and Data Structure 10 Main Index Contents 二维数组:在C/C++中,按行存储

  11. Lecture 1 – Introduction to Data Type and Data Structure 11 Main Index Contents • 2. Dynamic Array (new and delete) • int *arrayPtr; • arrayPtr = new int[6]; //申请的空间来自系统堆栈 • arrayPtr++;

  12. Lecture 1 – Introduction to Data Type and Data Structure 12 Main Index Contents • delete [] arrayPtr; • 动态申请的存储空间必须及时释放,以防内存泄漏(memory leak) • 3. 动态数组/静态数组 • 可直接访问(或随机访问) • 动态数组可动态扩大空间,通过new重新申请; • 动态数组同静态数组一样,可通过下标访问,需支持下标操作; • 边界检查问题 • C++提供了Vector容器(即超级数组)

  13. Lecture 1 – Introduction to Data Type and Data Structure 13 Main Index Contents • 4. Struct结构 • 具有不同类型的集合(multiple attributes) • struct date { int month, day, year; char dayOfWeek [12]; • }; • date today = { 3, 4, 2005, "Tuesday"); • cout << today.month; //访问struct的方法 • date *datePtr = &today; //使用指针访问struct • cout << (*datePtr).day; //使用指针访问成员数据cin >> datePtr->year; //输入成员数据 • Struct结构只包含数据,没有方法; • C++中Class类不仅包含数据,还有针对数据操作的各种方法;

  14. Lecture 1 – Introduction to Data Type and Data Structure 14 Main Index Contents

  15. Lecture 1 – Introduction to Data Type and Data Structure 什么是数据结构 • 数据结构 数据结构是组织和访问数据的系统方法。 组织:物理存储(数据) 访问(操作):查找、插入、删除、更新(方法) 为什么需要数据结构? • 问题求解=算法+数据结构 • 例如: 1.学生成绩排序(如何排序,如何快速查找) 2.建立客户信息(如何便于快速查找和删除) 3.交通网络问题(如最短路径问题,红绿灯设置问题)

  16. Lecture 1 – Introduction to Data Type and Data Structure 主要的数据结构类型 两类基本结构:线性结构,非线性结构 线性结构包括:数组,向量,链表,栈,队列(列表结构) 非线性结构包括:二叉树,图 数据结构两个基本问题: 物理结构:物理存储方式 (1.静态的 2.动态的) 逻辑结构:数据间的逻辑关系 (1.线性 2.非线性) 注:线性结构:每个元素具有唯一前驱和唯一后继的数据结构,只有 首元素无前驱,只有尾元素无后继; 非线性结构:每个元素前驱唯一、后继元素不唯一(树); 每个元素前驱、后继元素均不唯一(图);

  17. Lecture 1 – Introduction to Data Type and Data Structure 作业: P126 2

More Related