📄 dataexpr.html
字号:
<html><!-- #BeginTemplate "/Templates/article_template.dwt" -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="keywords" content="algorithm, data structure, contest, programming, 算法, 数据结构, 程序设计, 竞赛">
<meta name="description" content="discussing the algorithm and data structure of computer programming, as well as all kinds of programming contest.">
<meta name="description" content="讨论程序设计的算法与数据结构,各类程序设计竞赛试题解析和参赛经验介绍。">
<!-- #BeginEditable "doctitle" -->
<title>算法表达中的抽象机制</title>
<!-- #EndEditable -->
<script id="header" language="JavaScript" src="../lib/header.js"></script>
<!-- #BeginEditable "javascript" -->
<script language="JavaScript">
var previous = "end";
var next = "end";
</script>
<!-- #EndEditable -->
</head>
<body bgcolor="#FFFFFF">
<div id="content">
<!-- #BeginEditable "MainContent" -->
<h2>计算机中数据的描述方式</h2>
<p>我们知道,数据可以用不同的形式进行描述或存储在计算机存储器中。最常见的数据描述方法有:公式化描述、链接描述、间接寻址和模拟指针。</p>
<ul>
<li>公式化描述借助数学公式来确定元素表中的每个元素分别存储在何处,也就通过公式计算元素的存储器地址。最简单的情形就是把所有元素依次连续存储在一片连续的存储空间中,这就是通常所说的连续线性表,即数组。复杂一点的情形是利用复杂的函数关系根据元素的某些特征来计算元素在内存中的位置,这种技术称为散列技术(Hash,经常音译为哈希技术)。</li>
<li>在链接描述中,元素表中的每个元素可以存储在存储器的不同区域中,每个元素都包含一个指向下一个元素的指针。这就是通常所说的<a href="basic/list/chapter3_2.htm">链表</a>。这种描述方法的好处是,知道了第一个元素的位置,就可以依次找到第n个元素的位置,而且在其中插入元素非常方便,缺点是查找某个元素要遍历所有在该元素之前的元素,实际应用中经常和公式化描述结合起来使用。</li>
<li>在间接寻址方式中,元素表中的每个元素也可以存储在存储器的不同区域中,不同的是,此时必须保存一张表,该表的第i项指向元素表中的第i个元素,所以这张表是一个用来存储元素地址的表。指针数组(元素为指针的数组)就是这种描述法的应用。这种描述方法是公式化描述和链接描述的一种折衷方案,同时具有两种描述方法的优点,但是需要额外的内存开销。</li>
<li>模拟指针非常类似于链接描述,区别在于它用整数代替了指针,整数所扮演的角色与指针所扮演的角色完全相同。模拟指针的描述方式是链接描述和公式化描述的结合,元素被存储在不同的区域中,每个元素包含一个指示下一个元素位置的整数,可以通过某种公式由该整数计算出下一个元素的存储器地址。<a href="basic/list/chapter3_3.htm">线性表的游标实现</a>就是模拟指针描述法。</li>
</ul>
<!-- #EndEditable -->
</div>
<script src='../lib/footer.js'>
</script>
</body>
<!-- #EndTemplate --></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -