@ -658,35 +658,8 @@
< ul class = "md-nav__list" data-md-component = "toc" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "#351" class = "md-nav__link" >
3.5.1. 知识回顾
< / a >
< nav class = "md-nav" aria-label = "3.5.1. 知识回顾" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#_1" class = "md-nav__link" >
数据结构分类
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#_2" class = "md-nav__link" >
数据类型与编码
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "#352-q-a" class = "md-nav__link" >
3.5.2. Q & A
< a href = "#351-q-a" class = "md-nav__link" >
3.5.1. Q & A
< / a >
< / li >
@ -1874,35 +1847,8 @@
< ul class = "md-nav__list" data-md-component = "toc" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "#351" class = "md-nav__link" >
3.5.1. 知识回顾
< / a >
< nav class = "md-nav" aria-label = "3.5.1. 知识回顾" >
< ul class = "md-nav__list" >
< li class = "md-nav__item" >
< a href = "#_1" class = "md-nav__link" >
数据结构分类
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#_2" class = "md-nav__link" >
数据类型与编码
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "#352-q-a" class = "md-nav__link" >
3.5.2. Q & A
< a href = "#351-q-a" class = "md-nav__link" >
3.5.1. Q & A
< / a >
< / li >
@ -1931,15 +1877,14 @@
< h1 id = "35" > 3.5. 小结< a class = "headerlink" href = "#35" title = "Permanent link" > ¶ < / a > < / h1 >
< h2 id = "351" > 3.5.1. 知识回顾< a class = "headerlink" href = "#351" title = "Permanent link" > ¶ < / a > < / h2 >
< h3 id = "_1" > 数据结构分类< a class = "headerlink" href = "#_1" title = "Permanent link" > ¶ < / a > < / h3 >
< p > < strong > 数据结构分类< / strong > < / p >
< ul >
< li > 数据结构可以从逻辑结构和物理结构两个角度进行分类。逻辑结构描述了数据元素之间的逻辑关系,而物理结构描述了数据在计算机内存中的存储方式。< / li >
< li > 常见的逻辑结构包括线性、树状和网状等。通常我们根据逻辑结构将数据结构分为线性(数组、链表、栈、队列)和非线性(树、图、堆)两种。哈希表的实现可能同时包含线性和非线性结构。< / li >
< li > 当程序运行时,数据被存储在计算机内存中。每个内存空间都拥有对应的内存地址,程序通过这些内存地址访问数据。< / li >
< li > 物理结构主要分为连续空间存储(数组)和离散空间存储(链表)。所有数据结构都是由数组、链表或两者的组合实现的。< / li >
< / ul >
< h3 id = "_2" > 数据类型与编码< a class = "headerlink" href = "#_2" title = "Permanent link" > ¶ < / a > < / h3 >
< p> < strong > 数据类型与编码< / strong > < / p >
< ul >
< li > 计算机中的基本数据类型包括整数 byte, short, int, long 、浮点数 float, double 、字符 char 和布尔 boolean 。它们的取值范围取决于占用空间大小和表示方式。< / li >
< li > 原码、反码和补码是在计算机中编码数字的三种方法,它们之间是可以相互转换的。整数的原码的最高位是符号位,其余位是数字的值。< / li >
@ -1948,7 +1893,7 @@
< li > ASCII 码是最早出现的英文字符集,长度为 1 字节,共收录 127 个字符。GBK 字符集是常用的中文字符集, 共收录两万多个汉字。Unicode 致力于提供一个完整的字符集标准,收录世界内各种语言的字符,从而解决由于字符编码方法不一致而导致的乱码问题。< / li >
< li > UTF-8 是最受欢迎的 Unicode 编码方法, 通用性非常好。它是一种变长的编码方法, 具有很好的扩展性, 有效提升了存储空间的使用效率。UTF-16 和 UTF-32 是等长的编码方法。在编码中文时, UTF-16 比 UTF-8 的占用空间更小。Java, C# 等编程语言默认使用 UTF-16 编码。< / li >
< / ul >
< h2 id = "35 2-q-a"> 3.5.2 . Q & A< a class = "headerlink" href = "#35 2 -q-a" title = "Permanent link" > ¶ < / a > < / h2 >
< h2 id = "35 1-q-a"> 3.5.1 . Q & A< a class = "headerlink" href = "#35 1 -q-a" title = "Permanent link" > ¶ < / a > < / h2 >
< div class = "admonition question" >
< p class = "admonition-title" > 为什么哈希表同时包含线性数据结构和非线性数据结构?< / p >
< p > 哈希表底层是数组,而为了解决哈希冲突,我们可能会使用“拉链法”(后续散列表章节会讲)。在拉链法中,数组中每个地址(桶)指向一个链表;当这个链表长度超过一定阈值时,又可能被转化为树(通常为红黑树)。因此,哈希表可能同时包含线性(数组、链表)和非线性(树)数据结构。< / p >