C语言的程序逻辑——第一阶段2/31BENET4.0BENET4.0欢迎进入C语言第一阶段的学习本阶段学习的内容和课程结构安排算法和数据结构概论第1章C语言基础和数据类型2-4章程序结构5-7章数组第8章字符串第9章函数模块第11-12章指导案例安排在第10章欢迎词第一章:算法——理论部分4/31BENET4.0BENET4.0数据结构的概念和作用算法的概念和作用结构化程序设计的方法三种基本结构程序流程图和N-S流程图技能展示5/31BENET4.0BENET4.0数据结构是程序存储、组织数据的方式数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。数据元素:是数据的基本单位在计算机程序中通常作为一个整体进行考虑和处理。数据对象:是性质相同的数据元素的集合是数据的一个子集。数据结构概论6/31BENET4.0BENET4.0线性结构数组、链表、队列、栈树状结构二叉树、哈夫曼树星状结构网状结构数据结构7/31BENET4.0BENET4.0数组结构0x000000010x000000020x000000030x00000004内存地址:A[0]A[1]A[2]A[3]数组元素:指针:数组是若干个相同数据类型的元素,按照有序排列构成的其存储特点是:存储在连续的内存地址空间内存地址都是连续的8/31BENET4.0BENET4.0数组的特点0x000000010x000000020x000000030x00000004内存地址:A[0]A[1]A[2]A[3]数组元素:指针:一旦其中某个非末尾元素被删除其余元素都要移动一个位置查找数组元素,只需要查找到第一个元素的地址,就能按照顺序找到相应的元素了9/31BENET4.0BENET4.0在插入或者是删除元素的时候,由于每次修改元素都要移动数组元素的位置,即修改数组的指针信息在查找数组元素的时候,只需要找到数组第一个元素的地址,就可以按照顺序找到相应的元素数组结构的特点所以:数组在插入或删除元素的时候,效率低查找元素的时候,效率高所以,数组结构适合应用于数据变动不大的场合10/31BENET4.0BENET4.0在制作网站的时候,如果是多个控件,就可以声明成控件数组。数组结构的应用场合$button[1]={style=“input”};formname=“input1”style=“buttom[1]”输入框控件1/formformname=“input1”style=“buttom[2]”输入框控件2/formformname=“input1”style=“buttom[3]”输入框控件3/formformname=“input1”style=“buttom[4]”输入框控件4/formformname=“input1”style=“buttom[5]”输入框控件5/formformname=“input1”style=“buttom[6]”输入框控件6/formformname=“input1”style=“buttom[7]”输入框控件7/formformname=“input1”style=“buttom[8]”输入框控件8/formformname=“input1”style=“buttom[9]”输入框控件9/form由于控件只需要读取,不需要改动,所以控件适合用数组的结构11/31BENET4.0BENET4.0链表结构0x000000010x000000190x000000220x00000027A[0]A[1]A[2]A[3]内存地址:指针:链表元素:链表结构:元素的存储内存地址是不连续的链表元素不仅包含元素自身的值,也包含相邻元素的地址信息12/31BENET4.0BENET4.0链表结构的特点0x000000010x000000190x000000220x00000027A[0]A[1]A[2]A[3]内存地址:指针:链表元素:删除一个数据的时候,只需要修改相邻元素的信息查找元素的时候,要根据首元素保存的地址,逐步查询,才能查到相应的元素13/31BENET4.0BENET4.0在向链表删除或插入元素的时候,只需要修改相邻两个元素的信息查找链表元素的时候,需要先查找第一个元素,根据第一个元素的地址查找下一个元素,这样循环下去才能找到相应的元素链表结构的特点所以:链表插入或删除元素的时候,效率高于数组链表适合于数据更改比较频繁的场合14/31BENET4.0BENET4.0链表应用的模型R1R2R310.0.0.020.0.0.030.0.0.040.0.0.0f0/0f0/1.1.2.1.2配置接口IP地址后路由表中生成直连路由RoutingTableNETMetricC20.0.0.00C30.0.0.00动态路由不需要手工写路由,路由器之间能够自己互相学习!我的路由表是:30.0.0.0和40.0.0.0我的路由表是:20.0.0.0和30.0.0.0我的路由表是:10.0.0.0和20.0.0.0RoutingTableNETMetricC20.0.0.00C30.0.0.00?10.0.0.0??40.0.0.0?不同的路由协议,有不同的值50.0.0.0更新路由信息:30.0.0.040.0.0.050.0.0.0RoutingTableNETMetricC20.0.0.00C30.0.0.0010.0.0.040.0.0.050.0.0.0根据拓扑变化做出及时反映距离矢量路由协议就是使用链表结构的模型15/31BENET4.0BENET4.0队列:一种“先进先出”的数据结构栈:一种“先进后出”的数据结构队列、栈队列的应用模型是邮件服务器的SMTP协议,这个可以参照邮局寄信,先提交到邮局的新建,先发送。栈的应用模型可以参照DNS的服务模式16/31BENET4.0BENET4.0循环队列是一种特殊的队列循环队列第一个元素和最后一个元素内存地址是相邻的对于循环队列,队头元素的指针不一定小于队尾元素的指针,他们之间是根据元素的个数,呈现一种“周期”的关系17/31BENET4.0BENET4.0树状结构不是一种线性结构树状结构树根树节点树分支如果一个树的分支叫做“树叶”,就表示该分支不可再分了。18/31BENET4.0BENET4.0算法是为了解决某一个问题或某一类问题,对步骤的描述算法的分类算术运算:加减乘除关系运算:大于、小于、等于、不等于逻辑运算:并且、或者、取反赋值运算:算法19/31BENET4.0BENET4.0描述法描述法就是用文字来描述算法特点:条理清晰,但难以理解算法的描述方法1烧开水(1)、洗干净壶(2)、装水,上火(3)、水烧开,灌开水到瓶子里20/31BENET4.0BENET4.0程序流程图程序流程图是用一组规定的形状来表示算法特点:简洁、直观,结构清晰,逻辑性强缺点:影响版面程序流程图的形状含义算法的描述方法执行语句结束条件判断数据流汇接点BEGIN21/31BENET4.0BENET4.0用表格形式的框图来表示算法特点:节省版面缺点:难以理解N-S流程图22/31BENET4.0BENET4.0时间复杂度执行这个算法需要花费的时间一般是代码的长短(问题的规模)和输入的数据有关空间复杂度执行这个算法需要占用的存储空间数据类型的占用空间,额外附加空间算法的衡量23/31BENET4.0BENET4.0自顶而下减小算法的时间复杂度模块化将大问题分隔成若干个小问题,每个模块专门负责一个小问题。逐步求精结构化程序设计24/31BENET4.0BENET4.0顺序结构分支结构循环结构三种程序结构25/31BENET4.0BENET4.0那些数据结构属于线性结构?说出链表和数组的异同说出三种算法的表示方法有哪三种程序结构?小结26/31BENET4.0BENET4.0案例1:有两个墨水瓶子,一个是蓝墨水,一个是红墨水,要求把蓝墨水和红墨水进行互换算法练习