3_2算法与数据结构

合集下载

全套电子课件:数据结构与算法(第2版)

全套电子课件:数据结构与算法(第2版)
6
1.1.1 数据结构的概念
2.数据结构的定义
数据结构(data structure) B = ( D,R)
数据结构
有穷的结点集合
D中结点间的 有穷关系集合
数据的逻辑结构(logical form ) 存储形式:物理结构(physical form )
7
1.1.1 数据结构的概念
物理结构——存储结构 数据结构的存储形式(存储表示)
1.1.1 数据结构的概念
数据的种类 数值型数据(整数、实数等) 文字型数据(字符、字符串、程序代码) 矩阵、记录 声音、图像
数据总是以某种编码形式出现的
5
1.1 基本概念
1.1.1 数据结构的概念
数据元素(data element) 数据结点,简称结点(node) 描述一个独立事物的名称、数量、特征、性质的 一组相关信息组成一个数据结点 通常,一个结点含有多个数据项(data item) 结点的类型:结构型 关键字(key) 单值类型的结点:只含一个数据项
T(n)是f(n)的 只求T(n)的最高阶
大O函数
忽略其低阶项和常系数
简化T(n)的计算;较客观地反映当n很大时, 算法的时间性能
38
1.2.2 算法的评价标准和评价方 法
3.时间复杂性 示例 设T(n)=n2+4n,有f(n)=n2,则:
n2 + 4n = O(n2) 证明:
因为存在c=2,n0=4,使对于一切n>n0, 恒有
32
1.2.2 算法的评价标准和评价方 法
2.正确性 评价方法:
调试 精心挑选具有“代表性”的数据 只能证明算法有错,不能证明算法无错 人工证明
归纳法
33
1.2.2 算法的评价标准和评价方 法

算法与数据结构实验报告实验二

算法与数据结构实验报告实验二

算法与数据结构实验报告实验二实验名称:线性表实现集合运算姓名:卢丽娟学号:211006289专业:软件工程班级:二班指导教师:陈亦萍日期: 2012年3月24日一、实验目的本实验是要实现线性表的集合运算,通过该实验更深刻地理解线性结构的特点,学会并掌握线性表的顺序或链式表示和实现。

二、实验内容与实验步骤采用线性表表示集合,用线性表实现集合以及基本操作,实现两个集合的并、交、差运算。

用到的各种函数如下程序步骤所示。

步骤:1. 链表销毁void DestoryList_L(list& L){ list p=L->next,s;while(p){ s=p; p=p->next;free(s);}L->next=NULL;}2. 链表初始化void InitList(list &L){ L=NULL;}3. 往链表L中插入元素e,并按升序排列,如果L中已有元素e,则不插入ListInsert_L(list &L, char e){ list p=L->next,t,s; t = L;while(p!=NULL &&p->data<= e){ if(p->data==e) return OK;t=p; p=p->next;}s =(list)malloc(sizeof(LNode));s->data=e;s->next=p;t->next=s;return OK;}4. 创建链表,按字符串输入元素void CreateList_L(list &L, int n){ L =(list)malloc(sizeof(LNode));L->next=NULL;int i=0;for(i=n;i>0;i--){ char e; scanf("%c",&e);ListInsert_L(L,e);}getchar();}5.定义输入函数,分配存储空间void inputdata(list head)//定义输入函数{ list p;char tmp;scanf("%c",&tmp);while(tmp!='\n'){ p=(list)malloc(sizeof(struct LNode));//分配存储空间p->data=tmp;p->next=head->next;head->next=p;scanf("%c",&tmp); }}6.定义输出函数,初始化,并判断其是否为空void outputdata(list head)//定义输出集合函数{ list p;p=head->next;//初始化,p指向第一个结点while(p!=NULL)//判断是否为空{ printf("%c",p->data);p=p->next;} printf("\n");//输出集合函数}7.定义集合的并集函数,其中函数的数据元素均已按值非递减排列void MergeList(list head1,list head2,list head3)//定义集合的并集函数{//已知p1、p2中的数据元素按值非递减排列。

《算法与数据结构(2) 》期末考试卷

《算法与数据结构(2) 》期末考试卷

班号 学号 姓名 成绩《算法与数据结构(2) 》期末考试卷注意事项:1、关闭手机、将考试用文具以外的物品放于讲台上 2、严格遵守学校的考场纪律,违纪者请出考场 题目:一、 判断题(20分)请在正确的陈述前面括号中打√,在错误的陈述前面括号中打×。

1. ( × )如果一个问题不是NP 问题,那么它有可能是P 问题。

2. ( × )回溯法用深度优先或广度优先法搜索状态空间树。

3. ( × ))(n n O 221=+且)(n n O 222=4. ( × )贪心算法通过增加空间复杂性来减少时间复杂性。

5. ( × )快速排序算法的平均时间复杂度是O(nlogn),使用随机化快速排序算法可以将平均时间复杂度降得更低。

6. ( √ )基于比较的寻找数组A[1...n ]中最大值元素问题的下界是)3/(n Ω。

7. ( √ )直观地讲,P 类问题是易解的问题;而NP 问题是易被验证的问题。

8. ( × )下列问题是一个判定问题:给定一个合取范式,对其中的所有逻辑变量求一组真值赋值,使得给定的合取范式在该组真值赋值下为真。

9. ( √ )max(f(n),g(n))= Θ(f(n)+g(n))10.( √ )若 ))(()(n g O n f =,则 ))(()(n f n g Ω=二、 简答题(30分):1.简述拉斯维加斯(Las Vegas )算法和蒙特卡洛(Monte Carlo )算法的主要区别前者不一定总能给出解,但给出的解一定是正确的; 后者总能给出解,但是给出的解可能是错误的。

2.按照增长率上升的顺序排列以下函数,即,若在你的排序结果中,函数f(n) 跟在 g(n)的后面,则说明应该满足g(n)是O (f(n)):4/31)(n n f = n n f 2)(2= n n f log )(3= !)(4n n f = 22)(5n n f = nn n f log )(6= )(3n f , )(1n f , )(6n f , )(2n f , )(4n f , )(5n f3.推导以下递推式的解:T(n)=2 当n = 1时T(n)=2T(n/3)+2n 当n ≥2时T(n)=2T(n/3)+2n=2[2T(n/32)+2(n/3)]+2n=4T(n/32)+4(n/3)+2n=4[2T(n/33)+2(n/32)]+ 4(n/3)+2n=8T(n/33)+8(n/32)+ 4(n/3)+2n=…设n=3k=2k T(n/3k )+ 2k (n/3k-1)+ 2k-1 (n/3k-2)+…+ 4(n/3)+2n =2k 2+2n[(2/3)k-1 +(2/3)k-2 +…+2/3+1]=2k 2+6n[1-(2/3)k]=2k 2+6n-6.2k=6n-4.2k=6n-4.2=n n3log246⋅-4.请给出基于比较的对数组A[1…n]进行排序问题的最紧的下界,并写出两个平均时间复杂度为该下界的排序算法的名称。

算法与数据结构第2章 线性表

算法与数据结构第2章  线性表

利用已有基本运算求解问题 例2.1 假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即线性表中的数据元素即为集合中的成员。编写一 个算法求一个新的集合C=A∪B,即将两个集合的并集放在线 性表LC中。 解题思路: LC LA LC LB中不在LA中的元素
void unionList(List LA,List LB,List &LC)
该运算返回L中第 i(1≤i≤ListLength(L))个元素的值,存放在e中。
e=L->data[i-1];
return 1; } 本算法的时间复杂度为O(1)。
(7) 按元素值查找LocateElem(L,e) 该运算顺序查找第1个值域与e相等的元素的位序。若这样的元 素不存在,则返回值为0。 int LocateElem(SqList *L, ElemType e) { int i=0; while (i<L->length && L->data[i]!=e) i++; if (i>=L->length) else } return i+1; return 0;
{ int lena,lenb,lenc,i; ElemType e; InitList(LC); lena=ListLength(LA); for (i=1;i<=lena;i++) //求线性表的长度
//将LA的所有元素插入到Lc中
{ GetElem(LA,i,e); ListInsert(LC,i,e);
0
返回到 sq Main:
???
main:
引用的作用 main() { SqList *sq; InitList(sq); op(sq);

算法与数据结构课设(有向图,无向图,有向网,无向网)

算法与数据结构课设(有向图,无向图,有向网,无向网)

算法与数据结构课程设计报告系(院):计算机科学学院专业班级:教技1001姓名:李##学号: ******### 指导教师:***设计时间:2012.6.16 - 2012.6.24设计地点:4号楼2号机房目录一、设计方案 (1)二、实现过程以及代码 (2)三、测试 (20)四、结论和分析 (23)五、难点和收获 (23)一、 设计方案1.程序设计基本过程:拿到课程设计任务书,按照要求,需要设计有向图、有向网、无向图 、无向网四种图,以及邻接矩阵、邻接表两种数据存储结构,三层以上的显示菜单。

图的操作中又包含了有关线性表、栈和队列的基本操作。

由于显示菜单已给出,剩下的任务就是把函数写入其中。

2.程序流程图:预定义 定义结构体 定义变量 各种函数3.程序设计的原理:图的操作都是以两种存储结构为基础的:邻接矩阵存储结构和邻接表存储结构,如有向图,有向网,无向图,无向网的创建,其他的操作都是在四种图创建后才开始进行的。

所以,首先必须理解两种存储结构的定义。

图的邻接矩阵存储结构即图的数组表示法。

用两个数组分别存储数据元素(如顶点)的信息和数据元素之间的关系(如边或弧)的信息。

用邻接矩阵存储结构的图具有以下几点特征:(一):顶点数:vexnum ,边(弧)数:arcnum ,图的种类:kind ;(二):邻接矩阵:arcs(1顶点关系类型:adj 2相关信息:*info);(三):顶点向量(顶点名):vexs[];其优点是以二维数组表示有n 个顶点的图时,需存放n 个顶点的信息和n*n 条弧的信息存储量。

借助邻接矩阵容易判定任意两个顶点之间是否有边或弧相连,并容易求出各个顶点的度。

缺点是时间复杂度是O (n*n ),例如,构造一个具有n 个顶点和e 条边的无向网的时间复杂度为O (n*n+e*n )。

图的邻接表存储结构是图的一种链式存储结构。

对图中的每个顶点建立一个单链表,每个结点由三个域组成,邻接点域adjvex (弧尾在邻接表链表中的位序),链域nextarc (下一条弧),数据域info(权值)。

《数据结构、算法与应用(C++语言描述)》习题参考答案doc

《数据结构、算法与应用(C++语言描述)》习题参考答案doc

第1章概论1.数据、数据元素、数据结构、数据类型的含义分别是什么?数据:对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并由计算机程序处理的符号的总称。

数据元素:数据的基本单位,在计算机程序中通常作为一个整体考虑。

数据结构:数据元素之间的关系+运算,是以数据为成员的结构,是带结构的数据元素的集合,数据元素之间存在着一种或多种特定的关系。

数据类型:数据类型是用来区分不同的数据;由于数据在存储时所需要的容量各不相同,不同的数据就必须要分配不同大小的内存空间来存储,所有就要将数据划分成不同的数据类型。

数据类型包含取值范围和基本运算等概念。

2.什么是数据的逻辑结构?什么是数据的物理结构?数据的逻辑结构与物理结构的区别和联系是什么?逻辑结构:数据的逻辑结构定义了数据结构中数据元素之间的相互逻辑关系。

数据的逻辑结构包含下面两个方面的信息:①数据元素的信息;②各数据元素之间的关系。

物理结构:也叫储存结构,是指逻辑结构的存储表示,即数据的逻辑结构在计算机存储空间中的存放形式,包括结点的数据和结点间关系的存储表示。

数据的逻辑结构和存储结构是密不可分的,一个操作算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采与的存储结构。

采用不同的存储结构,其数据处理的效率是不同的。

因此,在进行数据处理时,针对不同问题,选择合理的逻辑结构和存储结构非常重要。

3.数据结构的主要操作包括哪些?对于各种数据结构而言,他们在基本操作上是相似的,最常用的操作有:●创建:建立一个数据结构;●清除:清除一个数据结构;●插入:在数据结构中增加新的结点;●删除:把指定的结点从数据结构中删除;●访问:对数据结构中的结点进行访问;●更新:改变指定结点的值或改变指定的某些结点之间的关系;●查找:在数据结构中查找满足一定条件的结点;●排序:对数据结构中各个结点按指定数据项的值,以升序或降序重新排列。

4.什么是抽象数据类型?如何定义抽象数据类型?抽象数据类型(Abstract Data Type 简称ADT)是指一个数学模型以及定义在此数学模型上的一组操作。

算法与数据结构题库与答案

算法与数据结构题库与答案

一、单项选择题1 某算法的时间复杂度是O(n2 ) ,表明该算法()。

A 问题规模是n2B 问题规模与n2成正比C 执行时间等于n2D 执行时间与n2成正比2、关于数据结构的描述,不正确的是()。

A数据结构相同,对应的存储结构也相同。

B数据结构涉及数据的逻辑结构、存储结构和施加其上的操作等三个方面。

C数据结构操作的实现与存储结构有关。

D定义逻辑结构时可不考虑存储结构。

3、按排序策略分来,起泡排序属于()。

A插入排序B选择排序C交换排序D归并排序4、利用双向链表作线性表的存储结构的优点是()。

A便于进行插入和删除的操作 B 提高按关系查找数据元素的速度C节省空间D便于销毁结构释放空间5、一个队列的进队顺序为1,2,3,4,则该队列可能的输出序列是()。

A 1,2,3,4B 1,3,2,4C 1,4,2,3D 4,3,2,16、 Dijkstra算法是按()方法求出图中从某顶点到其余顶点最短路径的。

A按长度递减的顺序求出图的某顶点到其余顶点的最短路径B按长度递增的顺序求出图的某顶点到其余顶点的最短路径C通过深度优先遍历求出图中从某顶点到其余顶点的所有路径D通过广度优先遍历求出图的某顶点到其余顶点的最短路径7、字符串可定义为n( n≥ 0)个字符的有限()。

其中,n是字符串的长度,表明字符串中字符的个数。

A集合B数列C序列D聚合8、在二维数组A[9][10]中,每个数组元素占用 3 个存储单元,从首地址SA 开始按行连续存放。

在这种情况下,元素A[8][5]的起始地址为()。

A SA+141B SA+144C SA+222D SA+2559、已知广义表为L(A(u,v,(x,y),z),C(m,(),(k,l,n),(())),((())),(e,(f,g),h)),则它的长度是()。

A2B3C4D510.对于具有n(n>1)个顶点的强连通图,其有向边条数至少有_____。

A. n+1B. nC. n-1D. n-211.一个递归算法必须包括 __________ 。

2020年智慧树知道网课《算法与数据结构(山东联盟)》课后章节测试满分答案

2020年智慧树知道网课《算法与数据结构(山东联盟)》课后章节测试满分答案

绪论单元测试1【单选题】(2分)数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的__ __和运算等的学科。

A.算法B.运算C.关系D.结构2【多选题】(2分)算法的描述形式包括A.N-S图B.类程序设计语言C.自然语言D.流程图3【判断题】(2分)算法的特征包括有穷性、确定性、可行性和输入输出。

A.对B.错4【判断题】(2分)对算法的描述包括程序形式和描述形式。

A.对B.错5【判断题】(2分)描述形式是算法的最终形式A.对B.错6【多选题】(2分)“数据结构”是介于()、()和()三者之间的一门核心课程。

A.计算机软件B.语句C.计算机硬件D.数学7【多选题】(2分)著名计算机科学家沃思教授提出的公式:程序=()+(),也说明了数据结构的重要性。

A.编程环境B.数据结构C.语法D.算法8【多选题】(2分)描述非数值计算问题的数学模型不再是数学方程,而是数据结构()。

A.集合B.表C.图D.树9【多选题】(2分)数据结构是一门研究()程序设计问题中计算机的()以及它们之间的()和()等的学科。

A.操作B.关系C.非数值计算D.操作对象10【单选题】(2分)顺序存储结构:借助元素在存储器中的()来表示数据元素间的逻辑关系。

A.地址B.相对位置C.数值D.结构第一章测试1【单选题】(1分)()是一种最简单的线性结构。

A.线性表B.集合C.树D.图2【单选题】(2分)()线性表的数据元素可以由所描述对象的各种特征的数据项组成。

A.链式存储B.散列存储C.顺序存储D.有序存储3【单选题】(2分)已知单向链表中指针p指向结点A,()表示删除A的后继结点(若存在)的链操作(不考虑回收)。

A.p=p—>nextB.p=p—>next—>nextC.p—>next=pD.p—>next=p—>next—>next4【单选题】(2分)已知last指向单向简单链表的尾结点,将s所指结点加在表尾,不正确的操作是____。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
a [i][j]=0; a [i][j]=1; a [i][j]=2; a [i][j]=3; a [i][j]=4;}
返回3.2.5
例1·
例2· 例3
【例2】螺旋阵:任意给定n值,按如下螺旋的方式输出方阵:
n=3 输出: 1 8 7 296 345
n=4 输出: 1 12 11 10 2 13 16 9 3 14 15 8 4 5 67
返回3.2.4
虽然现在工作站或小型机等机型上都有更高精度 的数值类型,但这些机型价格昂贵,只有大型科研机 构才有可能拥有,一般不易接触。当我们需要在个人 机上,对超过长整型的多位数(简称为“高精度数 据”)操作时,只能借助于数组才能精确存储、计算。
在用数组存储高精度数据时,从计算的方便性考虑, 决定将数据是由低到高还是由高到低存储到数组中;可以 每位占一个数组元素空间,也可几位占一个数组元素空间。
返回3.2.5
例1·
例2· 例3
2
3)用i代表行下标,以j代表列下标(除特别声明以后都遵守 此约定),则对n*n矩阵有以下常识: 主对角线元素i=j; 副对角线元素: 下标下界为1时 i+j=n+1,
下标下界为0时i+j=n-1; 主上三角◥元素: i <=j; 主下三角◣元素: i >=j; 次上三角◤元素:下标下界为1时i +j<=n+1,
返回3.2.3
例1· 例2·
例1
【例1】求X,使X2为一个各位数字互不相同的九位数。
总是分析:只能用枚举法尝试完成此题。由X2为一个九
位数,估算X应在10000——32000之间。
返回3.2.3
例1· 例2·
【例2】游戏问题:
12个小朋友手拉手站成一个圆圈,从某一个小朋友开 始报数,报到7的那个小朋友退到圈外,然后他的下 一位重新报“1”。这样继续下去,直到最后只剩下一 个小朋友,求解这个小朋友原来站在什么位置上呢?
下面的例子恰当地选择了用数组存储的信息,并 把题目中的有关信息作为下标使用,使算法的实现过 程大大简化。
【例1】统计选票
【例2】统计身高
【例3】统计及格学生的名单
【例4】统计找数字对的出现频率
【例3】一次考试共考了语文、代数和外语三科。某小组 共有九人,考后各科及格名单如下表,请编写算法找出
三科全及格的学生的名单(学号)。
3.2 算法与数据结构
3.2.1 3.2.2 3.2.3 3.2.4 3.2.5
原始信息与处理结果的对应存储 数组使信息有序化 数组记录状态信息 大整数存储及运算 构造趣味矩阵
1、常用的几种数据结构
数据的逻辑结构常分为四大类: (1)集合结构 (2)线性结构 (3)树形结构 (4)图结构(网结构)
返回3.2.4
3.2.5 构造趣味矩阵
趣味矩阵 经常用二维数组来解决
根据趣味矩阵中的数据规律,设计算法把要输出的数据存储到一 个二维数组中,最后按行输出该数组中的元素。
基本常识: 1)当对二维表按行进行操作时,应该“外层循环控制行;内层循 环控制列”;反之若要对二维表按列进行操作时,应该“外层循环 控制列;内层循环控制行”。 2)二维表和二维数组的显示输出,只能按行从上到下连续进行, 每行各列则只能从左到右连续输出。所以,只能用“外层循环控制 行;内层循环控制列”。
for(j=1;j<=n;j=j+1) {if (i=j or i+j=n+1) if (i+j<n+1 and i<j) if (i+j<n+1 and i>j) if (i+j>n+1 and i>j) if (i+j>n+1 a) {print( “换行符”); for( j=1;j<=n;j=j+1) print(a[i][j]); }
【例1】编程将编号“翻译”成英文。例35706“翻译”成 three-five-seven-zero-six。
例1· 例2·
3.2.3 数组记录状态信息
问题提出:
有的问题会限定在现有数据中,每个数据只 能被使用一次,怎么样表示一个数据“使用过” 还是没有“使用过”?
一个朴素的想法是:用数组存储已使用过 的数据,然后每处理一个新数据就与前面的数 据逐一比较看是否重复。这样做,当数据量大 时,判断工作的效率就会越来越低。
}
}
返回3.2.5
例1·
例2· 例3
用x模拟“摆放”的数据;用y(1——2*k-1)作循环变量,模 拟半圈内数据的处理的过程。
返回3.2.5
例1·
例2· 例3
【例3】设计算法生成魔方阵
魔方阵是我国古代发明的一种数字游戏:n阶魔方是指这样 一种方阵,它的每一行、每一列以及对角线上的各数之和为一个 常数,这个常数是:1/2*n*(n2+1),此常数被称为魔方阵常数。 由于偶次阶魔方阵(n=偶数)求解起来比较困难,我们这里只考 虑n为奇数的情况。 以下就是一个n=3的魔方阵:
618 753 294 它的各行、各列及对角线上的元素之和为15。
返回3.2.5
例1·
例2· 例3
for( i=1;i<=n;i=i+1)
{print(“换行符”); for(j=1;j<=n;j=j+1)
print(a[i][j]);
}
}
算法说明:若当前位置已经填有数的话,则应填在上一个数的下面, 所以需要用变量记录上一个数据填入的位置,算法中i1,j1的功能 就是记录上一个数据填入的位置。 算法分析:算法的时间复杂度为O(n2)。
( n=4,i=1时 “摆放7,8,9”) 4) i行(上方),从n+1-i列到i+1列
( n=4,i=1时 “摆放10,11,12”) 四个过程通过四个循环实现,用j表示i层内每边中行或列的下标。
返回3.2.5
例1·
例2· 例3
main( )
{int i,j,a[100][100],n,k;
input(n);
【例】编程求当N<=100时,N!的准确值 问题分析:问题要求对输入的正整数N,计算N!的准 确值,而N!的增长速度仅次于指数增长的速度,所以 这是一个高精度计算问题。 例如: 9!=362880 100! = 93 326215 443944 152681 699263 856266 700490 715968 264381 621468 592963 895217 599993 229915 608914 463976 156578 286253 697920 827223 758251 185210 916864 000000 000000 000000 000000
3)基于环境的考虑
顺序表容易实现,任何高级语言中都有数 组类型,链表的操作是基于指针的,操作简单。
3.2.1 原始信息与处理结果对应存储
每一个问题中的信息往往是多方面的,在算法中 一般有输入信息、输出信息和信息加工处理过程中的 中间信息。那么哪些信息需要用数组进行存储,数组 元素下标与信息怎么样对应等问题的确定,在很大程 度上影响着算法的编写效率和运行效率。
0 1110 2 0104 2 2044 2 0304 0 3330
算法设计:根据数据分布的特点,利用以上关于二维数组的基 本常识,在只考虑可读性的情况下,
返回3.2.5
例1·
例2· 例3
算法如下: main( ) {int i,j,a[100][100],n;
input(n); for(i=1;i<=n;i=i+1)
若需从键盘输入要处理的高精度数据,一般用字符数 型组存储,这样无需对高精度数据进行分段输入。当然这 样存储后,需要有类型转换的操作,不同语言转换的操作 差别虽然较大,但都是利用数字字符的ASCII码进行的。 其它的技巧和注意事项通过下面的例子来说明。本节只针 对大 整数的计算进行讨论,对高精度实数的计算可以仿 照进行。
k=1;
for(i=1;i<=n/2;i=i+1)
{for( j=i;j<=n-i;j=j+1) { a [j][i]=k; k=k+1;} /左侧/
for( j=i;j<=n-i;j=j+1) {a [n+1-i][j]=k; k=k+1;} /下方/
for( j= n-i+1;j>=i+1;j=j-1){a[j][n+1-i]=k;k=k+1;} /右侧/
下标下界为0时i+j<=n-1; 次下三角◢元素:下标下界为1时i +j>=n+1,
下标下界为0时i+j>=n-1;
返回3.2.5
例1·
例2· 例3
【例1】编程打印形如下规律的n*n方阵。
例如下图:使左对角线和右对角线上的元素为0,它们上方的元 素为1,左方的元素为2,下方元素为3,右方元素为4,下图是一个 符合条件的阶矩阵。
顺序表的存储空间是静态分配的,在程 序执行之前必须明确规定它的存储规模,也就 是说事先对“MAXSIZE”要有合适的设定,过大 造成浪费,过小造成溢出。可见对线性表的长 度或存储规模难以估计时,不宜采用顺序表; 链表不用事先估计存储规模,但链表的存储密 度较低,
2)基于运算的考虑
在顺序表中按序号访问ai的时间性能时O(1), 而链表中按序号访问的时间性能O(n),所以如果经 常做的运算是按序号访问数据元素,显然顺序表优 于链表;
返回3.2.3
例1· 例2·
3.2.4 大整数的存储及运算
计算机存储数据是按类型分配空间的。在微型机上为 整型提供2个字节16位的存储空间,则整型数据的范围为32768——32767;为长整型提供4个字节32位的存储空间, 则长整型数据的范围为-2147483648——2147483647;为 实型也是提供4个字节32位的存储空间,但不是精确存储 数据,只有六位精度,数据的范围±(3.4e-38~3.4e+38) ; 为双精度型数据提供8个字节64位的存储空间,数据的范 围±(1.7e-308~1.7e+308),其精确位数是17位。
相关文档
最新文档