文档介绍:数据结构与算法DataStructuresandAlgorithms课程安排理论:3课时/周+作业实验:3课时/两周+作业总成绩:平时40%(包括听课、作业、实验、期中)+期末60%教学用书:数据结构(C语言版),严蔚敏、吴伟民,清华大学出版社,1997年参考书:,许卓群,张乃孝,杨冬青,唐世渭,高等教育出版社,。什么是数据结构?什么是数据结构?为什么学习数据结构?达到什么目的?应该掌握哪些内容?技能?如何学习?从电话号码查询说起问题:你有一叠亲友和客户等的名片,需要在其中查找某个人的卡片。解法1:顺序查找卡片组织:顺序(线性逻辑结构)如何组织数据(逻辑关系)以便实现数据上的处理从电话号码查询说起解法1的实现(1):使用数组存储卡片;如何用C/C++表示数据,即数据的存储结构用C++表示:structCard{stringname;stringphone;};Cardphones[100];从电话号码查询说起解法1的实现(1):算法的实现;如何用C/C++实现算法(如查找)intsequentialSearch(Card[]st,intn,stringconst&target){//在查找表st中顺序查找其关键字为target的记录。如果查找成功,则返回//该元素在查找表中的下标(0—n-1);否则,返回表的长度n,表明查找失败。inti;for(i=0;i<n&&st[i].name!=target;i++);returni;}用C++表示:structCard{stringname;stringphone;};从电话号码查询说起解法1的实现(2):使用链表存储卡片;如何设计/选择存储数据的方式(存储结构)便于数据上操作(如查找)的实现用C++表示:structNode{Carddata;Node*next;};Node*head;head从电话号码查询说起解法1的实现(2):使用链表存储卡片;如何评价以上两种实现?掌握评价算法的基本技能structNode{Carddata;Node*next;};Node*sequentialSearchLinked(Node*head,stringconst&target){//在查找表st中顺序查找其关键字为target的记录。如果查找成功,则返回//指向该元素的指针;否则,返回空指针,表明查找失败。Node*p=head;while(p!=NULL&&(p->data).name!=target){p=p->next};returnp;}从电话号码查询说起解法2:二分查找。条件:先把卡片按照姓名排序;组织结构:线性逻辑结构;存储结构:连续结构(数组,又称随机存取结构)从电话号码查询说起解法3:二叉查找树;数据组织(逻辑关系):二叉树型结构;