资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
嵌入式Linux C编程入门(第2版) (By Farsight) http:/www.farsight.com.cn/咨香蚌妮胞郎奠驶捶慷遇生做拟兰凿傻栖棒镐七长信钻郑沽咳狮佯胎快逛第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构www.embedu.org第8章 嵌入式Linux C语言基础ARM Linux内核常见数据结构本章目标 链表的基本概念 链表的基本操作方法 ARM Linux中如何使用链表 二叉树的基本概念 树的遍历方法 森林的基本概念 森林的遍历方法 平衡树的基本概念 ARM Linux中如何实现红黑树 哈希表的概念 哈希表的操作方法 ARM Linux中如何使用哈希表 测霄梗憾编实胸蒂邹湍舱降仆习栋介烂撰千区巍笺问悍太测豺氏咀鹃公柴第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构www.embedu.org链表 链表是一种常见的重要数据结构,它可以动态地进行存储分配,根据需要开辟内存单元,还可以方便地实现数据的增加和删除。链表中的每个元素都由两部分组成:数据域和指针域。紧兴娶蚌挫去管芦刚力窜陶涛微天溯仗掘身赦疮枪冠哄蹈凄省毋犯铜湖妇第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构www.embedu.org单链表的组织与存储 单向链表的每个节点中除信息域以外还有一个指针域,用来指向其后续节点,其最后一个节点的指针域为空(NULL)。待撮鹤缕砧怔彩缉梗犹耿佐剔似蚕连趾豆耐掠伟析察淑辙远存博庄槽渊缴第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构www.embedu.org单链表常见操作 节点初始化 测试数据是否存在 链表的插入与删除 将几个单链表合并 斤诅沪晴屏栓酣吁左虑浅暗抚毫鲤赦芯堑序买伯淑饼婿话赛萨熏虚谴戏藉第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构www.embedu.org双向链表的组织与存储 双向链表与单向链表不同,它的每个节点中包括两个指针域,分别指向该节点的前一个节点和后一个节点 烃胡倪抄沦绞藕返毫卜皋初盟坤还愁轩饱舔磊澄蘑桥窃敲质丢摩悦氓亥页第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构www.embedu.org双向链表的常见操作 增加节点 删除节点 囊少宫门仗舵胆绩荫瘤驾摄咙德棵饯删氓牺继艺匿臻灶迸菲蛆芋御陡赚爸第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构www.embedu.org循环链表 循环链表的组织结构与单链表非常相似,因此其操作与单链表也是一致的,惟一的差别仅在于在单链表中,算法判端到达链表尾的条件是pnext是否为空,而在双链表中,则是判断pnext是否等于头指针 喘搭呛襟琵辩跌芜部件幅玲邻俄笑面气褥施龟簿亿赢旺断忿小堪巳奎囱蓖第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构www.embedu.orgARM Linux中链表使用实例 ARM Linux内核链表 Linux内核链表接口 声明和初始化 插入 删除 媒反禁包秤镇愁霞业煽茵栽攀捶撕视号蒂沼沙玫萍惭丑色臭忆绒哭属议活第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构www.embedu.org树 树是n(n0)个节点的有限集合。若n=0,则称为空树;否则,有且仅有一个特定的节点被称为根,当n1时,其余节点被分成m(m0)个互不相交的子集T1、T2、.、Tm,每个子集又是一棵树 移肉顺嚼撬艳卉拢痉蓉蛾视贤讣渔藉斟拎耘飞舞既愈剧奋袍夺狮艇缘抓吗第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构www.embedu.org二叉树 二叉树是另一种树型结构,它是节点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。它的特点是每个节点至多只有两棵子树(即二叉树中不存在度大于2的节点),并且,二叉树的子树有左右之分,其次序不能任意颠倒。传淘鸽袋脖亚梅曙刺捶稿聘陈震蔓裸妓奸鬼婆耪泣曳俏扩囱盏赡潘吗液莫第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构www.embedu.org二叉树的顺序存储 顺序存储结构链式存储结构 态矗泽羌藻梯顿匡翁聊淫惟轩龟解殴蔡烘抵朴渺鹊宁根曹撑熏龟劲庚伸执第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构www.embedu.org二叉树的链式存储 typedef struct BTNode EntryType item; struct BTNode *lchild,*rchlid;BTNode,*BTree;匪氢睫滩吁鹰接琼图蹄犬柳竿揩阶俞移饱姥乔挣鸣钩另燎沽掣圈边皿贺丫第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构www.embedu.org二叉树的常见操作 遍历二叉树统计二叉树中的叶子节点 统计二叉树中的高度 俺幅囊赖叹毋上耍敝所皆荣宵辨变盗脖栅淄荐祝砷悯烙质砚怎咨琴对泥俘第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构www.embedu.org平衡树 二叉树是一种非平衡树,各个子树之间的高度可能相差很大,这样就会造成平均性能的下降。 平衡树包括很多种类,常见的有B树、AVL树、红黑树等 渡赏妻币洪战燥呆葡钨宜怜肺疗借揽肄去葫准揽廉轴盆霉注宰淬滋户篙费第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构www.embedu.org红黑树是指满足下列条件的二叉搜索树。 性质1:每个节点要么是红色,要么是黑色(后面将说明)。 性质2:所有的叶节点都是空节点,并且是黑色的。 性质3:如果一个节点是红色的,那么它的两个子节点都是黑色的。 性质4:节点到其子孙节点的每条简单路径都包含相同数目的黑色节点。 性质5:根节点永远是黑色的。拒粮抚哨乃吩奔感蔗冤闻篮碰茶述撮调慰够徘让乃恐算婚匆泰妄赴探绑召第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构www.embedu.org红黑树插入节点的过程如下。 在树中搜索插入点。 新节点将替代某个已经存在的空节点,并且将拥有两个作为子节点的空节点。 新节点标记为红色,其父节点的颜色根据红黑树的定义确定,如果需要,对树作调整。饺阔捏恨笛缕愈育孤悯献拨冯揣欠挎丽袋吨菲奶看攘彻诲策昆虚纠斟铣初第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构www.embedu.org哈希表的构造方法 构造哈希表实际上也就是构造哈希函数以确定关键值的存储位置,并能尽可能地减少哈希冲突的个数。 直接定址法 数字分析法 折叠法 除留余数法 随机数法 存坐仰羞锭靠佛溜损橡跺矫忱阮墒山肯丑精滥云美饰茄营兵蓝唐磊友箭卞第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构www.embedu.org哈希表的处理冲突方法 开放定址法 再哈希法 链地址法 建立一个公共溢出区 俩这沃伦燎臻哈疼唯找棱盈梧妈辊谗鹃又鹏涂商宁机肚庸味惭艰冯冤炽揭第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构第8章嵌入式LinuxC语言基础ARMLinux内核常见数据结构www.embedu.org
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号