二维矩阵的主对角线的表达式为?

具有相同数据类型的 n (n ≥ 0) 个数据元素的有限序列,其中n为表长,当 n = 0 时线性表是一个空表。若用L命名线性表,则其一般表示为:

2、栈 (Stack) :只允许在一端进行插入或删除操作的线性表

4、逻辑结构:与普通线性表相同

5、数据的运算:插入、删除操作有区别

InitStack(&S):初始化栈。构造一个空栈 S,分配内存空间。

Pop(S, &x):读栈顶元素。若栈 S 非空,则用 x 返回栈顶元素。

n 个不同元素进栈,出栈元素不同排列的个数为

上述公式称为卡特兰数,可采用数学归纳法证明

头插法建立单链表,插入元素代表进栈

逻辑结构、数据的运算、存储结构 (物理结构)

只允许在一端进行插入,在另一端删除的线性表

3、队列特点:先进先出

2.2 队列的基本操作

2.3 顺序存储实现队列

// 初始时 队头、队尾指针指向 0 // 判断队列是否为空 // 出队(删除一个队头元素,并用 x 返回) // 获得对头元素的值,并 x 返回

用上述方法实现的队列会比设定的 MaxSize 少存储一个数据(因为要实现队空和队满的判断),可以进行如下的改进:

3、队列的顺序实现小总结

2.4 队列的链式实现

1、代码(下面的代码有BUG,还没有修改,请暂时跳过)

// 判断队列是否为空

2、顺序存储和链式存储队满

顺序存储 —— 预先分配的空间耗尽

链式存储 —— 一般不会队满,除非内存不足

3.1 栈在括号匹配中应用

2、代码(先体跳过,后面手动实现一下)

1、表达式的三个组成部分

2、中缀、后缀、前缀表达式

3、中缀表达式转后缀表达式:

① 确定中缀表达式中各个运算符的运算顺序

② 选择下一个运算符,按照「左操作数右操作数运算符」的方式组合成一个新的操作数

③ 如果还有运算符没被处理,就继续 ②

因为运算顺序不唯一,因此对应的后缀表达式也不唯一,机算结果是前者(左优先,只要左边的运算符能先计算,就优先算左边的)

4、用栈实现后缀表达式的计算:

① 从左往右扫描下一个元素,直到处理完所有元素

② 若扫描到操作数则压入栈,并回到 ①;否则执行 ③

③ 若扫描到运算符,则弹出两个栈顶元素,执行相应运算,运算结果压回栈顶,回到 ①

5、中缀表达式转前缀表达式:

① 确定中缀表达式中各个运算符的运算顺序

② 选择下一一个运算符,按照「运算符左操作数右操作数」的方式组合成一个新的操作数

③ 如果还有运算符没被处理,就继续 ②(“右优先”原则:只要右边的运算符能先计算,就优先算右边的)

6、用栈实现前缀表达式的计算:

① 从右往左扫描下一个元素,直到处理完所有元素

② 若挡描到操作数则压人栈,并回到 ①;否则执行 ③

③ 若扫描到运算符,则弹出两个栈顶元素,执行相应运算,运算结果压回栈顶,回到 ①

7、中缀表达式转后缀表达式(机算)

初始化一个栈,用于保存暂时还不能确定运算顺序的运算符。从左到右处理各个元素,直到末尾。可能遇到三种情况:

① 遇到操作数。直接加入后缀表达式。

② 遇到界限符。遇到“(” 直接入栈;遇到“)” 则依次弹出栈内运算符并加入后缀表达式,直到弹出“(”为止。注意:“(” 不加入后缀表达式。

③ 遇到运算符。依次弹出栈中优先级高于或等于当前运算符的所有运算符,并加入后缀表达式,若碰到“(”或栈空则停止。之后再把当前运算符入栈。

按上述方法处理完所有字符后,将栈中剩余运算符依次弹出,并加入后缀表达式。

8、用栈实现中缀表达式的计算

初始化两个栈,操作数栈和运算符栈

若扫描到操作数,委入操作数栈

若扫描到运算符或界限符,则按照“中缀转后缀”相同的逻辑压入运算符栈(期间也会弹出运算符,每当弹出一个运算符时,就需要再弹出两个操作数栈的栈顶元素并执行相应运算,运算结果再压回操作数栈)

3.3 栈在递归中的应用

1、函数调用的特点:最后被调用的函数最先执行结束(LIFO)

将递归算法转换成对应的非递归算法时,通常需要使用栈来保存中间结果。

2、函数调用时,需要用一个栈存储:

(2) 求斐波那契数列

缺点:可能包含很多重复计算

每进入一层递归,就将递归调用所需信息压入栈顶

每退出一层递归,就从栈顶弹出相应信息

效率低,太多层递归可能会导致栈溢出;可能包含很多重复计算

改进可以自定义栈将递归算法改造成非递归算法

2、队列中存储的数据依次如下:

4.2 图的广度优先遍历

2、队列中存储的数据依次如下:

4.3 队列在操作系统中的应用

多个进程争抢着使用有限的系统资源时,FCFS(First Come First Service,先来先服务)是一种常用策略。

5.1 一维数组的存储结构

各数组元素大小相同,且物理上连续存放。

注:除非题目特别说明,否则数组下标默认从0开始

5.2 二维数组的存储结构

5.3 对称矩阵和上、下三角矩阵的压缩存储

普通存储: n * n 二维数组

压缩存储策略:只存储主对角线 + 下三角区(或主对角线 + 上三角区)

1、策略:只存储主对角线 + 下三角区列按行优先(行主序)将各元素存入一维数组中

2、策略:只存储主对角线+下三角区 按列优先(列主序)将各元素存入一维数组中。

3、下三角矩阵:除了主对角线和下三角区,其余的元素都相同

4、上三角矩阵:除了主对角线和上三角区,其余的元素都相同

5.4 三对角矩阵的压缩存储

压缩存储策略:按行优先(或列优先)原则,只存储带状部分

5.5 稀疏矩阵的压缩存储

稀疏矩阵:非零元素远远少于矩阵元素的个数

压缩存储策略:顺序存储——三元组<行, 列, 值>

【1】视频:王道计算机考研 数据结构


· 致力于成为全知道最会答题的人

该数组的元素个数为24个。二维数组A(2to5,5)的第一维是2到5共4个,第二维是从0到5共6个,所以二维数组A一共有24个元素。

本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式]。二维数组又称为矩阵,行列数相等的矩阵称为方阵。对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵主对角线外都是零元素。

设a[p][q]为A的第一个元素,即二维数组的行下标从p到m+p,列下标从q到n+q,按“行优先顺序”存储时则元素a[i][j]的地址计算为:

按“列优先顺序”存储时,地址计算为:


· 爱知识,爱学习,爱劳动

二维数组A(2 to 5,5)的第一维是2到5共4个,第二维是从0到5共6个,所以二维数组A一共有 24 (4*6)个元素

所以一共有4*6=24个元素

排列组合计算方法如下:

二维数组A(2 to 5,5)的第一维是2到5共4个,第二维是从0到5共6个,所以二维数组A一共有 24 (4*6)个元素

下载百度知道APP,抢鲜体验

使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。

然而,对于如何求二维倒格基失,大部分教科书未作介绍.个别教科书~①则是从(2)式出发,今为垂直于与的单位矢量,从而求出,.对于这种求法,学生往往提出质疑:为什么二维的问题非要从三维出发来解决呢?同时,鉴于表面物理,低维系统等课题日益受到重视,因此,我们认为适当讲授二维倒格基矢的矩阵表达式((3)式)是颇为有益的.

我要回帖

更多关于 二对角行列式是什么 的文章

 

随机推荐