计算机软件技术基础.docx

上传人:b****5 文档编号:2933120 上传时间:2022-11-16 格式:DOCX 页数:16 大小:72.64KB
下载 相关 举报
计算机软件技术基础.docx_第1页
第1页 / 共16页
计算机软件技术基础.docx_第2页
第2页 / 共16页
计算机软件技术基础.docx_第3页
第3页 / 共16页
计算机软件技术基础.docx_第4页
第4页 / 共16页
计算机软件技术基础.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

计算机软件技术基础.docx

《计算机软件技术基础.docx》由会员分享,可在线阅读,更多相关《计算机软件技术基础.docx(16页珍藏版)》请在冰豆网上搜索。

计算机软件技术基础.docx

计算机软件技术基础

数据集合中各元素之间所固有的逻辑关系称之为:

数据的逻辑结构

数据在计算计中的储存关系称之为:

数据的储存结构

所谓的数据处理是指对数据集合中的各元素以各种方式进行运算,包括插入、删除、查找、更改等运算,也包括对数据元素进行分析。

有序表、无序表

顺序查找:

从第一个元素开始,逐个与被查找元素进行比较,直到某元素与被查找元素相等,或者表中所有元素与被查元素进行比较后都不相等。

数据结构:

指相互有关联的数据元素的集合。

数据元素具有广泛的含义,一般来说,现实世界中客观存在的一切个体都可以看做是数据元素。

逻辑关系:

在数据处理领域中,通常把数据元素之间这种固有的关系简单的用前件后件关系来描述。

前后件关系是数据元素之间的一个基本关系,但前后件关系所表示的实际意义随具体对象的不同而不同。

一个数据结构应包含以下两方面的信息:

表示数据元素的信息。

表示各数据元素之间的前后件关系。

数据的逻辑结构是:

反映数据元素之间逻辑关系的数据结构。

一个数据的逻辑结构根据需要可以表示成多种储存结构,常用的储存结构有

顺序储存结构

连接储存结构

索引储存结构

在数据结构中,没有前件的结点称为根结点,没有后件的结点称为终端结点(也称为叶子结点)。

除了根结点和终端结点外的其他结点一般称之为内部结点。

数据结构根据前件后件的关系分为:

线性结构和非线性结构

非空的线性数据结构即:

线性表有以下2大特点:

有且只有一个根结点。

每一个结点最多有一个前件,也最多有一个后件。

如果一个数据结构不是线性结构,则称为非线性结构

在复杂的线性表中,一个数据元素还可以由若干个数据项组成。

由若干个数据项组成的数据元素称为:

记录,而由多个记录构成的线性表又称为:

文件。

非空线性表有如下一些结构特征:

有且只有一个根结点,它无前件。

有且之有一个终端结点,它无后件。

出根结点与终端结点外,其他所有结点有且只有一个前件,有且只有一个后件。

线性表中结点的个数n称为线性表的长度。

当n=0时,称为空表。

线性表的顺序储存结构具有以下两个基本特点:

(1)线性表中所有元素所占用的存储空间是连续的。

(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。

线性表开辟的存储空间已满了,不能再插入元素了。

如果再插入元素,则会出现上溢的错误

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

例如,线性表,树,二叉树等。

线性表为线性结构,树和二叉树为非线性结构。

线性表

在栈中,允许插入语删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底,栈顶元素总是最后被插入的元素,从而也是最先能背删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。

即栈是按照“先进后出”或“后进先出”表。

由此可以看出,栈具有记忆功能。

根据线性链表中指针域的不同,可将线性表分为静态线性链表和动态线性链表。

往栈中插入一个元素称为入栈运算,从栈中删除一个元素称为退栈运算。

栈顶指针top动态反应了栈中元素的变化情况。

插入的新元素是b,则插入的过程如下:

(1)首先处理以下3种异常情况:

当存储空间已满(n=m)时为上溢错误,不能进行插入,算法结束

当i>n时,认为在最后一个元素之后(第n+1个元素之前)插入

当i<1时,认为在第一个元素之前插入

当然从最后一个元素开始,直到第i个元素,其中每一个元素均往后移动一个位置

(2)最后将新元素插入到第i个位置,并且将线性表的长度增加1。

删除假设线性表的存储空间为V(1:

m),线性表的长度为n(n<=m),删除的位置为i(表示删除第i个元素),则删除的过程如下:

(1)首先处理以下两种情况:

当线性表为空时为“上溢”,不能进行插入,算法结束。

当i<1或i>n时,认为在最后一个元素之后(第n+1个元素之前)插入。

(2)然后从第i+1个元素开始,直到最后一个元素,其中每个元素均依次往前移动一个位置

(3)最后将线性表的长度减小1。

入栈运算是指在栈顶位置插入一个新元素。

设栈顺序存储空间为S(1:

m),栈顶指针为top,入栈的元素为x,则入栈运算的操作过程如下:

1.首先判断栈顶指针是否已经指向存储空间的最后一个位置,如果是,则说明栈空间已满,不可能再进行入栈操作。

这种操作称为栈“上溢”错误,算法结束。

2.然后将栈顶指针进一(top加1)

3.最后将新元素x插入到栈顶指针指向的位置

退栈运算是指取出栈顶元素并赋给一个指定的变量。

设栈顺序存储空间为S(1:

m),栈顶指针为top,则退栈运算的操作过程如下:

(1)首先判断栈顶指针是否为0,如果是,则说明栈空,不可能进行退栈操作。

这种情况称为栈“下溢”错误,算法结束。

(2)然后将栈顶元素(栈顶指针指向的元素)赋给一个指定的变量。

(3)最后将栈顶指针退一(top减1)

读栈顶元素是指将栈顶元素赋给一个指定的变量。

设栈顺序存储空间为S(1:

m),栈顶指针为top,则读栈顶元素的操作过程如下:

(1)首先判断栈顶指针是否为0,如果是,则说明栈空,读不到栈顶元素,算法结束。

(2)然后将栈顶元素赋给指定的变量y。

必须注意的是,这个运算不删除栈顶元素,只是将它的值赋给一个变量,因此,在这个运算中,栈顶指针不会改变。

队列

队列是指允许在一端进行插入,而在另一端进行删除的线性表。

允许插入的一端称为队尾,通常用一个称为尾指针(rear)的指针指向队尾元素,即尾指针总是指向最后被插入的元素;允许删除的一端称为排头,通常也是用一个排头指针(front)指向排头元素的前一个位置。

因此,队列又称为“先进先出”或“后进后出”

往队列的队尾插入一个元素称为入队运算,从队列的排头删除一个元素称为退队运算

在实际应用中,队列的顺序存储结构一般采用循环队列的形式。

所谓循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。

在循环队列结构中,当存储空间的最后一个位置已被使用而再要进行入队运算时,只要存储空间的第一个位置空闲,便可将元素加入到第一个位置,即将存储空间的第一个位置作为队尾循环队列的初始状态为空,即rear=front=m。

入队运算:

是指在循环队列的队尾加入一个新元素。

设循环队列顺序存储空间为Q(1:

m)队尾指针为rear,排头指针为front;标志s入队的元素为x,则入队运算的操作过程如下:

(1)首先判断循环队列是否满。

当循环队列非空(s=1)且队尾指针等于排头指针时,说明循环队列已满,不能进行入队运算。

这种情况称为“上溢”,此时算法结束。

(2)然后将队尾指针进一(rear=rear+1),并当rear=m+1时置rear=1。

(3)最后将新元素x插入到队尾指针指向的位置,并且置循环队列非空标志。

退队运算:

是指在循环队列的排头位置退出一个元素并赋给指定的变量。

设循环队列顺序存储空间为Q(1:

m),队尾指针为rear,排头指针为front,标志s,则退队运算的操作过程如下:

(1)首先判断循环队列是否为空。

当循环队列为空(s=0)时,不能进行退队运算。

这种情况称为“下溢”,此时算法结束

(2)然后将排头指针进一(front=front+1),并当front=m+1时置front=1

(3)再将排头指针指向的元素赋给指定的变量。

(4)最后判断退队后循环队列是否为空。

当front=rear时置循环队列空标志(s=0)

线性链表的顺序存储结构存在的缺点:

(1)在一般情况下,要在顺序存储的线性表中插入一个新元素或则删除一个元素时,为了保证插入或则删除后的线性表仍然为顺序存储,则在插入或则删除过程中需要移动大量的数据元素

(2)当为一个线性表分配顺序存储空间后,如果出现线性表的存储空间已满,但还需要插入新的元素时,就会发生“上溢”错误。

在这种情况下,如果在原线性表的存储空间后找不到与之连续的可用空间,则会导致运算的失败或中断。

(3)在实际应用中,往往是同时有多个线性表共享计算机的存储空间。

在这种情况下,存储空间的分配将是一个难题。

链式存储结构

带链的线性链表

假设数据结构中的每个数据结点对应一个存储单元,这种存储单元称为存储结点,简称结点。

在链式存储结构中的每个数据结点由两个部分组成:

一部分用于存放数据元素值,称为数据域,;另一部分用于存放指针,称为指针域。

在链式存储结构中,存放数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。

链式才能出方式既可以用于表示线性结构,也可以用于表示非线性结构。

在用链式结构表示复杂的非线性结构时,其指针域的个数要多一些。

线性链表又称为线性单链表,在这种链表中,每一个结点只有一个指针域,由这个指针找到后件结点,但不能找到前件结点。

因此,这种线性链表中,只能顺指针向链尾方向进行扫描,这对于某些问题的处理会带来不便,因此在这种连接方式下,由某一个结点出发,只能找到它的后件,为了找出它的前件,必须从头指针开始从新寻找。

为弥补这个缺点,在某些应用中,对线性链表中的每个结点设置两个指针,一个称为左指针,用以指向其前结点,另一个称为右指针,用以指向后结点。

这样的线性链表称为双向链表

带链的栈

在实际应用中,带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,这种带链的栈称为可利用栈。

由于可利用栈连接了计算机存储空间中所有的空闲结点,因此,当计算机系统或用户程序需要存储结点时,就可以从中取出栈顶结点

数据的顺序存储结构

二维数组在计算机中是顺序存储的,其存储方式一般有两种:

以行为主的顺序存储结构,以列为主的顺序存储结构

规矩矩阵的压缩

所谓规矩矩阵,是指矩阵中非零元素的分布有规律。

对于下三角矩阵的压缩存储,大约有一半的元素为零,这些零元素不必存储,只需储存下三角部分的非零元素。

存储的原则是:

用一个一维数组以行为主顺序存放下三角矩阵中的所有下三角部分的元素

以列为主压缩存储下三角矩阵A的情况,当j<=i时的访问公式。

以行为主压缩存储下三角矩阵

对称矩阵的压缩存储。

aij=B[i(i-1)/2+j]j<=i

aij=B[j(j-1)/2+i]j>i

树是简单的非线性链表结构

在树的结构中,每一个结点只有一个前件,称为父结点。

在树中,没有前件的结点只有一个,称为根结点,简称为树的根,在树结构中每一个结点可以有多个后件,他们都称为该结点的子结点,没有后件的结点称为叶子结点。

在树结构中,一个结点所拥有的后件个数称为结点的度,在树中,所有结点中的最大度称为树的度,树结构具有明显的层次结构,即树是一种层次结构。

在树中,以某结点的一个结点为子结点为根构成的树称为该结点的一棵子树

叶子结点是没有子树的。

二叉树

二叉树是一种很有用的非线性结构。

二叉树的两个特点:

(1)非空二叉树只有一个根结点。

(2)每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。

二叉树的基本性质

1.在二叉树的第k层上,最多有2k-1(k>=1)个结点。

2.深度为m的二叉树最多有2m-1个结点

3.在任意一棵二叉树中,度为0的结点(叶子结点)总是比度为2的结点多一个。

4.具有n个结点的二叉树,其深度至少为[log2n]+1,其中[log2n]表示取log2n的整数部分。

满二叉树是指这样一种二叉树:

除最后一层外,每一层上的所有结点都有两个子结点。

这就是说,在满二叉树中,每一层上的结点树都达到最大值,即在满二叉树的第k层上有2k-1个结点,且深为m的满二叉树有2m-1个结点。

完全二叉树是指这样的二叉树:

除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1