精华内容
下载资源
问答
  • 数组A[1..5,1..6]每个元素占5个单元,将其按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[5...
    万次阅读 多人点赞
    2019-04-17 17:00:17

    数据结构问题:数组A【1..5,1..6】的每个元素占5个单元,将其按行优先次序储存在起始地址为1000的连续内存单元中,则A【5,5】的地址是?计算式子(4*6+5)*5-5+1000=1140这个“-5”是从哪里来的?

    1000
    A[1,1]
    A[1,2]
    A[1,3]
    A[1,4]
    A[1,5]
    A[1,6]
        +6*5
    A[2,1]
    ...
    A[2,6]
        +6*5
    A[3,1]
    ...
    A[3,6]
        +6*5
    
    A[4,1]
    ...
    A[4,6]
        +6*5
    
    A[5,1]
    ...
    A[5,5]
        +5*5
    
    1000 + (6*5)*4 + 5*5 = 1000 + 120 + 25 = 1145
    但是1145是A[5,5]之后内存单元的地址(也就是A[5,6]的首地址)。因此A[5,5]的首地址是1145-5=1140
    如果你学过汇编,就很好理解了。
    更多相关内容
  • 数组A[10][15]的每个元素都是占4个字节的数据,将其按列优先次序存储,若A[0][0]存储地址在起始地址为1000的内存单元中,则元素A[6][9]的地址是?答案1384 loc=1000+4*[10*(9)+(6)]=1384 这个是有公式的:A[n][ ],求...

    这个还是要记一下的

    数组A[10][15]的每个元素都是占4个字节的数据,将其按列优先次序存储,若A[0][0]存储地址在起始地址为1000的内存单元中,则元素A[6][9]的地址是?答案1384

    loc=1000+4*[10*(9)+(6)]=1384

    这个是有公式的:A[n][ ],求元素A[i][j]?


    loc=loc₀+d*[n*(j)+(i)]


    loc₀是起始地址,
    d:每个元素所占字节数
    n是数组列数
    j,i是所求元素下标

    在拿一个网上的栗子

    设有二维数组A[1…12,1…10],其每个元素占4个字节,数据按列优先顺序存储,
    第一个元素的存储地址为100,那么元素A[4,5]的存储地址为?答案304

    这里数组从1开始,所以j=5-1,i=4-1:

    loc=100+4*[12*(5-1)+(4-1)]=304

    plus:

    感觉上面没有说清楚,于是再加一点。

    当你上面的计算出错时,有没有好好的看清题目呢。为什么这个数组位置储存于自己想的不一样啊!

    仔细读题发现“按列优先”和平常的“按行优先”是不是有区别呢。答案我想大家看到这就想明白了吧!如果是按列优先当然是要用上面的n*j咯!简单吧!哈哈!

    展开全文
  • 优先存储和列优先存储

    万次阅读 2017-07-08 21:02:51
    一直搞不懂什么是矩阵的行优先和列优先存储,现在在看Eigen的tutorial,里面详细的解释了什么是行优先和列优先,在这里做下笔记。行优先和列优先存储我们随便找一个矩阵来说明吧,比如说如下的矩阵a:1, 3, 5 4, 2, ...

    一直搞不懂什么是矩阵的行优先和列优先存储,现在在看Eigen的tutorial,里面详细的解释了什么是行优先和列优先,在这里做下笔记。

    行优先和列优先存储

    我们随便找一个矩阵来说明吧,比如说如下的矩阵a:

    1, 3, 5
    4, 2, 6,
    7, 8, 9

    我们都知道,这是一个3行3列的矩阵,但是在计算机内存里存储的时候,是线性的存储,也就是说所有矩阵的元素都被存储到了一行。
    如果是行优先存储,那么矩阵a在内存里是这么存储的1,3,5,4,2,6,7,8,9。如果使用的是列优先存储,那么矩阵a在内存里是这么存储的1,4,7,3,2,8,5,6,9。

    Eigen代码

    我们可以用Eigen代码来解释上面的例子。data()函数返回矩阵第一个元素的地址。

    #include <iostream>
    #include <Eigen/Dense>
    
    using namespace Eigen;
    using namespace std;
    
    int main()
    {
        Matrix<int, 2, 3, ColMajor> Acolmajor;
       // Acolmajor << 8, 2, 2, 9,
        //             9, 1, 4, 4,
        //             3, 5, 4, 5;
        Acolmajor << 1, 2, 3,
                     4, 5, 6;
        cout << Acolmajor << endl;
        cout << "In memory" << endl;
    
        for (int i = 0; i < 6; i++) cout << *(Acolmajor.data() + i) << endl;
    
    
        Matrix<int, 2, 3, RowMajor> Arowmajor;
        Arowmajor << 1, 2, 3,
                     4, 5, 6;
        cout << Arowmajor << endl;
        cout << "In memory" << endl;
    
        for (int i = 0; i < 6; i++) cout << *(Arowmajor.data() + i) << endl;
    }

    结果为:

    1 2 3
    4 5 6
    In memory
    1
    4
    2
    5
    3
    6
    1 2 3
    4 5 6
    In memory
    1
    2
    3
    4
    5
    6

    可以看出,相同的矩阵在内存里被不同的存储方式存放了。

    如何选择使用哪种存储方式?

    对于行优先遍历的,使用行优先存储,对于列优先遍历的,使用列优先存储。Eigen默认使用列优先存储。

    展开全文
  • 数据结构 线性表试题

    2020-10-04 16:50:32
    数据结构 线性表试题 数组A[1…5,1…6]每个元素占5个单元,将其按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[5,5]的地址为: A. 1120 B. 1125 C. 1140 D. 1145

    数据结构 线性表试题

    1、

    数组A[1…5,1…6]每个元素占5个单元,将其按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[5,5]的地址为:
    A.1120 B.1125 C.1140 D.1145

    该数组有6列,每个元素占5个单元,前四行每行6个元素,即所占单元数为:465;第五行A所在位置前有四个元素,其所占单元数为:45;则A[5,5]的地址即为1000+465+45=1140
    2、

    某线性表采用顺序存储结构,每个元素占4个存储单元,首地址为100,则第12个元素的存储地址为()。
    A.144 B.145 C.147 D.148

    第12个元素的存储地址为(即为第12个元素的首地址):100+11*4=144
    3、

    某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用什么存储方式最节省运算时间?
    A.单链表 B.仅有尾指针的单循环链表 C.仅有头指针的单循环链表 D.双链表

    C虽然可以直接获得第一个元素,但是想要获得最后一个元素却需要遍历整个链表。而B给出的是带有尾结点的单循环链表,这样就可以直接得到最后一个元素,想要得到第一个元素只需要再遍历一个元素就可以,双链表不是循环的,双链表只是一个结点带走前驱和后继两个指针域。 从双链表的第一个结点不能直接到最后一个结点,要从头遍历。反之,通过最后一个结点也不能直接找到第一个结点,要从最后向前遍历。

    展开全文
  • 优先:就是数组元素按照先存储每一行的方式进行存储 ...分别按行优先和列优先的顺序列出四维数组A[2][2][2][2]的所有元素在内存中的存储次序 按行优先 0000 0001 0010 0011 0100 0101 0110 0111 100..
  • #include<iostream> using namespace std; //n*m*p的三维数组创建函数 void Biuld(int n, int m, int p) { ... //以行优先 for (k = 0; k < p; k++) for (i = 0; i < n; i++) fo.
  • 因为计算机存储空间是先后有序的,如何存储A[m*n]的m*n个元素是个问题,一般有两种:按行优先存储和按列优先存储。 row-major:存成a11,a12,...,amn的顺序。 PASCAL, C/C++,, Python语言中,数组按行优先顺序...
  • 按行优先顺序列出四维数组A[2][3][2][3]所有元素在内存中存储次序
  • 顺序存储

    2017-05-08 18:10:00
    顺序存储 posted @ 2017-05-08 18:10 酸奶加绿茶 阅读(...) 评论(...) 编辑 收藏
  • 数组的顺序存储及(C语言)实现

    千次阅读 2019-03-17 18:23:43
    由于数组可以是多维的,而顺序存储结构是一维的,因此数组中数据的存储要制定一个先后次序。通常,数组中数据的存储有两种先后存储方式: 以列序为主(先列后行):按照行号从小到大的顺序,依次存储每一列的元素 ...
  • 二维数组存储地址

    千次阅读 2019-04-24 09:47:04
    二维数组存储地址
  • 数组的主要考点为数组下标与存储地址计算和特殊矩阵的压缩存储方法;针对广义表的考点主要为在广义表中取原子项(表)的操作、求表的长度和深度。同时,应注意相关概念的区分。 一、选择题 1. 串的长度是指( ...
  • 内存地址的计算

    千次阅读 2018-11-07 23:43:51
     数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是( )。  A. 1175 B. 1180 C. 1205 D. 1210 二维数组表达:A[6][7] (可以当做六列七行) 题目...
  • 三维数组A[n][m][k],n,m,k三个分量分别称之为行...三位数组按行优先存储在内存空间中的存储方式为: 首先将第一行第一列的页存满,再存第一行第二列的页,直到第一行存满后再存下一行。 转载于:https://www.cnblo...
  • 计算机考研408每日一题 day137

    千次阅读 2021-11-25 23:52:40
    数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是___。(南京航空航天大学 2014年)客户端软件与POP3服务器建立___连接来接受邮件。(中山大学 ...
  • 数据结构第5章例题与答案

    千次阅读 2021-05-25 07:08:12
    数据结构第5章例题与答案考试吧...设有一个10阶的对称矩阵a,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为()。【燕山大学2001一、2(2分)】a.13b.33c.18...
  • 深度优先遍历和广度优先遍历

    万次阅读 多人点赞 2019-05-29 21:24:38
    深度优先遍历和广度优先遍历 什么是 深度/广度 优先遍历? 深度优先遍历简称DFS(Depth First Search),广度优先遍历简称BFS(Breadth First Search),它们是遍历图当中所有顶点的两种方式。 这两...
  • 以邻接表为存储结构,实现连通无向图的深度优先和广度优先遍历。以用户指定的结点为起点,分别输出每种遍历下的结点访问序列和相应生成树的边集。 三、实现提示 设图的结点不超过30个,每个结点用一个编号表示(如果...
  • 广度优先遍历(DFS) 广度优先遍历的过程是首先访问初始点v,接着访问顶点v的所有未被访问过的邻接点v1,v2,…,vt,然后再按照v1,v2,…,vt的次序访问每一个顶点的所有未被访问过的邻接点,以此类推,直到图中所有和...
  • 图的存储结构相比较线性表与树来说就复杂很多,对于线性表来说,是一对一的关系,所以用数组或者链表均可简单存放。树结构是一对多的关系,所以我们要将数组和链表的特性结合在一起才能更好的存放。 那么我们的图,...
  • 数据结构—深度优先遍历、广度优先遍历深度优先遍历代码实现...以邻接表为存储结构的深度优先遍历算法如下 (其中v是初始点,visited 是一个全局数组,初始时所有元素均为0,表示所有顶点尚未被访问过) 代码实现 int vis
  • 广度优先搜索将图分离为层,每层之间间隔一步,每个点被遍历的次序和遍历该图的初始点的距离有关。 如改图例子1(凑活把树当图看吧),按照深度优先搜索从点1开始遍历: 1–>2–>4,无法继续搜索,回退一步...
  • 顺序表的相关题解

    2021-06-15 20:33:41
    1.数组A[1..5,1..6]每个元素占5个单元,将其按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[5,5]的地址为: 数组A有5行,5列,注重行号和列号题目中给出都是从1开始的,5行5列就是我题目中红色...
  • 线性存储元素时,元素的关系也同时确定了。而非线性数据结构就不同了,需要同时考虑存储数据元素和数据元素的关系。由于图的结构比较复杂,任意两个顶点之间都可能存在联系,因此无法以数据元素在存储区中的物理位置...
  • 广度优先搜索(BFS) 广度优先搜索是按层来处理顶点的,距离开始点最近的那些顶点首先被访问,而最远的那些顶点则最后被访问。BFS的代码使用了一个队列。搜索的步骤: 首先选择一个顶点作为起始顶点,将起始顶点放...
  • 这是之前的一次数据结构实验,按老师的想法应该是老老实实建树然后输出,但由于本人...//存储先序的双标记 int CL[3][20], cl = 0; int CR[3][20], cr = 0; char C[3][20];//存储层次的双标记和值 int c0 = 0; int..
  • 当然最常见的是后继节点只有两个,这样的树叫做二叉树,二叉树的应用非常的多, 二叉查找树 二叉排序树 树的概念如下: 术语 子树、根、叶子 层级 二叉树 满二叉树和完全二叉树 存储方式 树的存储方式有两种 数组...
  • 图的广度优先搜索算法思想: 设初始状态时图中的所有顶点都未被访问,则: (1):从图中某个顶点i出发,访问i; (2):访问i的所有相邻接且未被访问的所有顶点i1, i2, i3...in; (3):以i1, i2, i3...in的...
  • 通过键盘输入图的顶点,以及每一条边的两个顶点,从而建立无向图。实现无向图的深度优先遍历算法。要求以用户给定的结点为起始点,显示深度优先遍历次序

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,403
精华内容 14,161
关键字:

优先次序存储