《动态分配内存与数据结构》课后习题

合集下载

c语言的动态内存分配题目

c语言的动态内存分配题目

以下是一个使用C语言动态内存分配的题目示例:
题目:给定一个长度为n的整数数组,要求将其划分为若干个长度为k的连续子数组,使得所有子数组的和尽可能接近。

请你实现一个函数,返回划分后的所有子数组的最大和。

示例输入:
输入:n = 5, k = 2
输出:8
解释:将数组[1, 2, 3, 4, 5] 划分为[1, 2], [3, 4], [5] 三个子数组,它们的和分别为3, 7, 5,和为15,接近于最大和。

实现这个函数可以使用动态规划的思想。

首先定义一个长度为n的数组dp,其中dp[i]表示以第i个元素结尾的子数组的最大和。

然后从左到右遍历数组,对于每个位置i,计算dp[i]的值。

如果i-1位置的子数组和大于0,则将dp[i]设置为dp[i-1]加上当前元素的值;否则,将dp[i]设置为当前元素的值。

最后返回dp[n-1]即可。

C++第七章 动态内存分配习题解答

C++第七章 动态内存分配习题解答

第七章动态内存分配习题一、基本概念与基础知识自测题7.1 填空题7.1.1 C/C++定义了4个内存区间:(1)、(2)、(3)和(4)。

答案:(1)代码区,存放程序代码;(2)全局变量与静态变量区,存放全局变量或对象(包括静态);(3)局部变量区即栈(stack)区,存放局部变量;(4)动态存储区,即堆(heap)区或自由存储区(free store)。

7.1.2 静态定义的变量和对象用标识符命名,称为(1);而动态建立的称为(2),动态建立对象的初始化是通过(3)来(4)。

答案:(1)命名对象(2)无名对象(3)初始化式(initializer)(4)显式初始化7.1.4 当动态分配失败,系统采用(1)来表示发生了异常。

如果new返回的指针丢失,则所分配的堆空间无法收回,称为(2)。

这部分空间必须在(3)才能找回,这是因为无名对象的生命期(4)。

答案:(1)返回一个空指针(NULL)(2)内存泄漏(3)重新启动计算机后(4)并不依赖于建立它的作用域7.1.5 按语义的缺省的构造函数和拷贝构造赋值操作符实现的拷贝称(1),假设类对象obj中有一个数据成员为指针,并为这个指针动态分配一个堆对象,如用obj1按成员语义拷贝了一个对象obj2,则obj2对应指针指向(2)。

答案:(1)浅拷贝(2)同一个堆对象7.2简答题(以下习题题号可能和教材不一致!)7.2.1用delete删除p所指向的无名对象时,p指针也同时被删除了,对不对?为什么?答:不对。

注意这时释放了p所指向的无名对象占用的内存空间,也就是撤销了该无名对象,称动态内存释放(dynamic memory deallocation),但指针p本身并没有撤销,它仍然存在,该指针所占内存空间并未释放。

7.2.2为什么动态建立类对象数组时,类的定义一定要有缺省的构造函数?答:new后面类(class)类型也可以有参数。

这些参数即构造函数的参数。

但对创建数组,没有参数,只能调用缺省的构造函数。

《数据结构》课后习题答案(第2版)

《数据结构》课后习题答案(第2版)

《数据结构》课后习题答案(第2版)数据结构课后习题答案(第2版)第一章:基本概念1. 什么是数据结构?数据结构是指数据元素之间的关系,以及相应的操作。

它研究如何组织、存储和管理数据,以及如何进行高效的数据操作。

2. 数据结构的分类有哪些?数据结构可以分为线性结构和非线性结构。

线性结构包括数组、链表、栈和队列;非线性结构包括树和图。

3. 什么是算法?算法是解决特定问题的一系列有序步骤。

它描述了如何输入数据、处理数据,并产生期望的输出结果。

4. 算法的特性有哪些?算法具有确定性、有限性、输入、输出和可行性这五个特性。

5. 数据结构和算法之间的关系是什么?数据结构是算法的基础,算法操作的对象是数据结构。

第二章:线性表1. 顺序表的两种实现方式是什么?顺序表可以通过静态分配或动态分配的方式实现。

静态分配使用数组,动态分配使用指针和动态内存分配。

2. 单链表的特点是什么?单链表由节点组成,每个节点包含数据和一个指向下一个节点的指针。

它的插入和删除操作效率高,但是查找效率较低。

3. 循环链表和双向链表分别是什么?循环链表是一种特殊的单链表,在尾节点的指针指向头节点。

双向链表每个节点都有一个指向前一个节点和后一个节点的指针。

4. 链表和顺序表的区别是什么?链表的插入和删除操作效率更高,但是查找操作效率较低;顺序表的插入和删除操作效率较低,但是查找操作效率较高。

第三章:栈和队列1. 栈是什么?栈是一种特殊的线性表,只能在表的一端进行插入和删除操作。

后进先出(LIFO)是栈的特点。

2. 队列是什么?队列是一种特殊的线性表,只能在表的一端进行插入操作,在另一端进行删除操作。

先进先出(FIFO)是队列的特点。

3. 栈和队列的应用有哪些?栈和队列在计算机科学中有广泛的应用,例如浏览器的前进后退功能使用了栈,操作系统的进程调度使用了队列。

4. 栈和队列有哪些实现方式?栈和队列可以使用数组或链表来实现,还有更为复杂的如双端队列和优先队列。

数据结构(c )课后习题答案

数据结构(c )课后习题答案

数据结构(c )课后习题答案数据结构(C)课后习题答案在学习数据结构(C)课程时,课后习题是非常重要的一部分。

通过完成这些习题,我们可以加深对数据结构的理解,提高编程能力,并且更好地掌握C语言的运用。

下面我们就来看看一些常见的数据结构(C)课后习题答案。

1. 链表的创建和遍历链表是数据结构中常见的一种,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。

在C语言中,我们可以通过动态内存分配来创建链表,并且可以使用指针来进行遍历。

下面是一个简单的链表创建和遍历的示例代码:```c#include <stdio.h>#include <stdlib.h>struct Node{int data;struct Node *next;};void printList(struct Node *node){while (node != NULL){printf("%d ", node->data);node = node->next;}}int main(){struct Node *head = NULL;struct Node *second = NULL;struct Node *third = NULL;head = (struct Node *)malloc(sizeof(struct Node)); second = (struct Node *)malloc(sizeof(struct Node)); third = (struct Node *)malloc(sizeof(struct Node)); head->data = 1;head->next = second;second->data = 2;second->next = third;third->data = 3;third->next = NULL;printList(head);return 0;}```2. 栈的实现栈是一种后进先出(LIFO)的数据结构,可以使用数组或链表来实现。

《动态分配内存与数据结构》课后习题(含答案)

《动态分配内存与数据结构》课后习题(含答案)

6、分析下列代码是否存在问题,选择合适的选项: int main(void) { int *p = new int [10]; p = new int [10]; delete [] p; p = NULL; return 0; } A.没有问题 C.存在空悬指针
B.有内存泄漏 D.存在重复释放同一空间 D 。 D.堆区
3、写出程序的运行结果 #include <iostream> #include <string> using namespace std; template <typename T> class Node { public: T data; Node<T> *link; Node(const T&info) {data=info;link=NULL;} }; template <typename T> class OrderedLink { Node<T> *head; public: OrderedLink() {head=NULL;} OrderedLink(const T*list,int num) { head = NULL;
B. p->next=r; q->next=r->next; r->next=q; C. q->next=r->next; r->next=q; p->next=r; D. r->next=q; p->next=r; q->next=r->next; 二、填空题 1、在长度为 10 的顺序存储的线性表中插入一个元素,最坏情况下需要移动表 中 10 个元素。
2、 设某循环队列的容量为 40, 头指针 front=3 (指向队头元素的前一位置) , 尾指针 rear=25 (指向队尾元素),则该循环队列中共有 22 个元素。

《数据结构》各章课后作业答案

《数据结构》各章课后作业答案

《数据结构》各章课后作业答案 第一章 绪论课后作业答案1. 简述线性结构与非线性结构的不同点。

答:线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑关系是多对多的。

2.分析下面各程序段的时间复杂度(每小题5分,共20分)解:1.第一个for 循环执行n+1次,第二个for 循环执行n(m+1)次,A[i][j]=0;语句执行n*m 次,此程序段总的执行次数为n+1+n*(m+1)+n*m=2nm+2n+1次。

故时间复杂度为O(n*m)。

2.算法的时间复杂度是由嵌套最深层语句的执行次数决定的,本程序段嵌套最深层语句为:s+=B[i][j];它的执行次数为n 2,所以本程序段的时间复杂度是O(n 2)。

3. 该算法的基本操作是语句x++, 其语句频度为:1111n n i i j --==∑∑=10()n i n i -=-∑=(1)2n n - 所以本程序段的时间复杂度是O(n 2)。

4.设语句执行m 次,则有3m≤n ⇒m ≤log 3n所以本程序段的时间复杂度为O(log 3n)。

第二章 线性表课后作业答案1. 填空题。

(1)在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与表长和该元素在表中的位置有关。

(2)线性表中结点的集合是 有限 的,结点间的关系是 一对一的。

(2)s=0;for (i=0; i<n; i++)for(j=0; j<n; j++) s+=B[i][j]; sum=s; 答:O (n 2)(1) for (i=0; i<n; i++) for (j=0; j<m; j++) A[i][j]=0;(3) x=0;for(i=1; i<n; i++)for (j=1; j<=n-i; j++)x++;(4)i=1;while(i<=n)i=i*3;(3)向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动 n-i+1 个元素。

头歌数据结构课程设计答案链表动态内存分配

头歌数据结构课程设计答案链表动态内存分配

头歌数据结构课程设计答案链表动态内存分配对于链表的动态内存分配,可以采用以下方法:1. 首先需要定义一个链表结构体,包括数据元素和后继指针。

2. 通过调用malloc函数实现动态内存分配,分配所需的节点内存。

3. 在节点内存中存储数据元素和后继指针信息。

4. 将新分配的节点插入到链表中,更新前驱节点的后继指针和当前节点的后继指针。

5. 删除节点时,先保存下一个节点的地址,然后释放当前节点的内存,再将前驱节点的后继指针指向下一个节点。

以下是简单的实现代码:```c//定义链表结构体typedef struct Node {int data;//数据元素struct Node* next;//指向后继节点的指针}Node, *LinkList;//创建链表LinkList createList() {LinkList head = NULL;//头指针初始化为空Node *p, *s;int x;scanf("%d", &x);//输入节点的数据元素while (x != 0) {s = (Node*)malloc(sizeof(Node));//分配节点内存s->data = x;//存储节点的数据元素if (head == NULL) {//链表为空时head = s;p = head;//当前节点为头节点}else {//链表不为空时p->next = s;//将新节点插入到链表尾部p = s;//当前节点成为尾节点}scanf("%d", &x);}p->next = NULL;//最后一个节点后继指针为空return head;}//删除链表中的节点void deleteNode(LinkList list) {Node* p = list;while (p->next != NULL) {//循环查找节点if (p->next->data == x) {//找到了需要删除的节点Node* q = p->next;p->next = q->next;//删除节点free(q);//释放内存return;}p = p->next;//指向下一个节点}}```以上是链表动态内存分配的简单实现,可以根据具体需求进行修改和扩展。

数据结构课后习题答案

数据结构课后习题答案

数据结构课后习题答案数据结构习题集答案第1章绪论1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。

解:数据是对客观事物的符号表示。

在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

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

数据对象是性质相同的数据元素的集合,是数据的一个子集。

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

存储结构是数据结构在计算机中的表示。

数据类型是一个值的集合和定义在这个值集上的一组操作的总称。

抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。

是对一般数据类型的扩展。

1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。

解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。

一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。

抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。

在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。

1.3 设有数据结构(D,R),其中{}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r = 试按图论中图的画法惯例画出其逻辑结构图。

解:1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。

解:ADT Complex{数据对象:D={r,i|r,i 为实数} 数据关系:R={} 基本操作:InitComplex(&C,re,im)操作结果:构造一个复数C ,其实部和虚部分别为re 和imDestroyCmoplex(&C)操作结果:销毁复数CGet(C,k,&e)操作结果:用e 返回复数C 的第k 元的值Put(&C,k,e)操作结果:改变复数C的第k元的值为eIsAscending(C)操作结果:如果复数C的两个元素按升序排列,则返回1,否则返回0IsDescending(C)操作结果:如果复数C的两个元素按降序排列,则返回1,否则返回0Max(C,&e)操作结果:用e返回复数C的两个元素中值较大的一个Min(C,&e)操作结果:用e返回复数C的两个元素中值较小的一个}ADT ComplexADT RationalNumber{数据对象:D={s,m|s,m为自然数,且m不为0}数据关系:R={}基本操作:InitRationalNumber(&R,s,m)操作结果:构造一个有理数R,其分子和分母分别为s和m DestroyRationalNumber(&R)操作结果:销毁有理数RGet(R,k,&e)操作结果:用e返回有理数R的第k元的值Put(&R,k,e)操作结果:改变有理数R的第k元的值为eIsAscending(R)操作结果:若有理数R的两个元素按升序排列,则返回1,否则返回0IsDescending(R)操作结果:若有理数R的两个元素按降序排列,则返回1,否则返回0Max(R,&e)操作结果:用e返回有理数R的两个元素中值较大的一个Min(R,&e)操作结果:用e返回有理数R的两个元素中值较小的一个}ADT RationalNumber1.5 试画出与下列程序段等价的框图。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《动态分配内存与数据结构》习题学号姓名一、选择题1、是一种限制存取位置的线性表,元素的存取必须服从先进先出的规则。

A.顺序表B.链表C.栈D.队列2、是一种限制存取位置的线性表,元素的存取必须服从先进后出的规则。

A.顺序表B.链表C.栈D.队列3、与顺序表相比,链表不具有的特点是。

A.能够分散存储数据,无需连续内存空间B.插入和删除无需移动数据C.能够根据下标随机访问D.只要内存足够,没有最大长度的限制4、如果通过new运算符动态分配失败,返回结果是。

A.-1 B.0C.1D.不确定5、实现深复制中,不是必须自定义的。

A.构造函数B.复制构造函数C.析构函数D.复制赋值操作符函数6、分析下列代码是否存在问题,选择合适的选项:。

int main(void){int *p = new int [10];p = new int [10];delete [] p;p = NULL;return 0;}A.没有问题 B.有内存泄漏C.存在空悬指针 D.存在重复释放同一空间7、通过new运算符动态分配的对象,存储于内存中的。

A.全局变量与静态变量区 B.代码区 C.栈区 D.堆区8、下列函数中,可以是虚函数。

A.构造函数 B.析构函数 C.静态成员函数 D.友元函数9、关于通过new运算符动态创建的对象数组,下列判断中是错误的。

A. 动态创建的对象数组只能调用默认构造函数B. 动态创建的对象数组必须调用delete []动态撤销C. 动态创建的对象数组的大小必须是常数或常变量D. 动态创建的对象数组没有数组名10、顺序表不具有的特点是A. 元素的存储地址连续B. 存储空间根据需要动态开辟,不会溢出C. 可以直接随机访问元素D. 插入和删除元素的时间开销与位置有关11、假设一个对象Ob1的数据成员是指向动态对象的指针,如果采用浅复制的方式复制该对象得到对象Ob2,那么在析构对象Ob1和对象Ob2时会的问题。

A. 有重复释放B. 没有C. 内存泄漏D. 动态分配失败12、假设对5个元素A、B、C、D、E进行压栈或出栈的操作,压栈的先后顺序是ABCDE,则出栈的先后顺序不可能是。

A. ABCDEB. EDCBAC. EDBCAD. BCADE13、假设对4个元素A、B、C、D、E进行压栈或出栈的操作,压栈的先后顺序是ABCD,则出栈的先后顺序不可能是。

A. ABCDB. DCBAC. BCADD. DCAB14、通过new运算符动态创建的对象的存放在中。

A. 代码区B. 栈区C. 自由存储区D. 全局数据区15、链表不具有的特点是。

A. 元素的存储地址可以不连续B. 存储空间根据需要动态开辟,不会溢出C. 可以直接随机访问元素D. 插入和删除元素的时间开销与位置无关16、有关内存分配和释放的说法,下面当中错误的是A.new运算符的结果只能赋值给指针变量B.动态创建的对象数组必须调用delete []动态撤销C.用new分配的空间位置是在内存的栈区D.动态创建的对象数组没有数组名17、关于栈,下列哪项不是基本操作A.删除栈顶元素B.删除栈底元素C.判断栈是否为空D.把栈置空18、关于链表,说法错误的是A. 元素的存储地址可以不连续B. 存储空间根据需要动态开辟,不会溢出C. 必须是单向的,不能是双向的或者是环形的。

D. 插入和删除元素的时间开销与位置无关19、关于线性链表,其不具备的特点是A.链表不需要事先分配空间,可以根据需要动态分配B.链表和数组一样可随机访问表内任一元素C.插入删除不需要移动表内的元素D.链表所需空间大小与其节点数成正比20、下列关于队列的描述中正确的是A.在队列中只能插入元素而不能删除元素B.在队列中只能删除元素而不能插入元素C.队列是特殊的线性表,只能在一端插入或删除元素D.队列是特殊的线性表,只能在一端插入元素,而在另一端删除元素21、设内存分配语句int *p=new int,选择合适的填充使P所指的存储单元赋初值28。

A.(28) B.[28] C.{28} D.*2822、对于循环队列,下列叙述中正确的是A.队头指针是固定不变的B.队头指针一定大于队尾指针C.队头指针一定小于队尾指针D.队头指针可以大于队尾指针,也可以小于队尾指针23、下列关于线性链表的叙述中,正确的是A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续C.进行插入与删除时,不需要移动表中的元素D.以上三种说法都不对24、设有如图的线性链表,其中p,q,r都为指向链表中节点的指针。

先需要将上述链表当中q和r所指的节点交换位置,同时保持链表的连续,则下列语句当中无法胜任的是__________A. q->next=r->next; p->next=r; r->next=q;B. p->next=r; q->next=r->next; r->next=q;C. q->next=r->next; r->next=q; p->next=r;D. r->next=q; p->next=r; q->next=r->next;二、填空题1、在长度为10 的顺序存储的线性表中插入一个元素,最坏情况下需要移动表中个元素。

2、设某循环队列的容量为40,头指针front=3(指向队头元素的前一位置),尾指针rear=25(指向队尾元素),则该循环队列中共有个元素。

3、假设有一长度为20的线性表用来存储栈,如果栈底元素bottom=19,栈顶元素top=10,则该栈当中具有个元素。

4、假设有int *p = new int [20],则当释放该数组时,应用语句来完成。

5、单向链表的节点分为域和域两部分。

如果需要实现环形链表,则需要把最后一个节点的指向。

6、一般情况下,使用系统提供的默认析构函数就可以了,但当对象的成员中使用了运算符动态分配内存空间时,就必须以正确释放对象空间。

为了对象间能正确赋值,还必须要。

7、通过new运算符动态创建的对象的存放在中。

8、默认复制构造函数是按成员复制,称为9、void a(node *p,Datatype x){node *q=new node;q->info=x;q->link=p->link;p->link=q;}以上a函数实现的功能是10、对含有动态分配的数据成员的类对象应该采用复制,动态分配的资源通常要求在中释放。

三、程序阅读题1、指出程序的运行结果:#include <iostream>using namespace std;class stack{int *rep;int size,top;public:stack(int n=10):size(n){cout<<"Initial Constructor"<<endl;rep=new int [size];top=0;}stack(stack &s):size(s.size) {cout<<"Copy Constructor"<<endl;rep=new int[size];for (int i=0;i<size;i++) rep[i]= s.rep[i];top=s.top;}~stack(){cout<<"Destructor"<<endl;delete [] rep;}void push(int a) {rep[top]=a;top++;}int pop(){--top; return rep[top];}bool isEmpty() const{return top == 0;}};void main(void){stack s1;for(int i=1;i<5;i++) s1.push(i);stack s2(s1);for(i=1;i<3;i++) cout<<s2.pop()<<',';s2.push(6);s1.push(7);while (!s2.isEmpty()) cout<<s2.pop()<<',';cout<<endl;}2、指出程序的运行结果:#include <iostream>usingnamespacestd;class stack{int *rep;int size,top;public:stack(int n=10):size(n)//构造函数{cout<<"Initial Constructor"<<endl;rep=newint[size];top=-1;}stack(stack &s):size(s.size)//复制构造函数,需深复制。

{cout<<"Copy Constructor"<<endl;rep=newint[size];for (int i=0;i<size;i++)rep[i]= s.rep[i];top=s.top;}~stack(){cout<<"Destructor"<<endl;delete [] rep;}void push(int a) {rep[++top]=a; }int pop() {return rep[top--];}bool isEmpty() {return top == -1;}};int main(){stack *ptr=new stack[2];for(int i=1;i<5;i++){ ptr[0].push(i);ptr[1].push(i+6);}stack s2(ptr[0]);for(i=0;i<2;i++)cout<<s2.pop()<<',';s2.push(ptr[1].pop());ptr[0].push(ptr[1].pop());s2.push(ptr[1].pop());while(!s2.isEmpty())cout<<s2.pop()<<',';cout<<endl;delete[] ptr;return 0;}3、写出程序的运行结果#include <iostream>#include <string>using namespace std;template <typename T>class Node{public:T data;Node<T> *link;Node(const T&info) {data=info;link=NULL;}};template <typename T>class OrderedLink{Node<T> *head;public:OrderedLink() {head=NULL;}OrderedLink(const T*list,int num){head = NULL;for(;num>0;num--,list++)Insert(*list);}~OrderedLink(){while(head!=NULL){Node<T> *p=head;head=p->link;delete p;}}void Insert(const T&data){Node<T> *p = new Node<T>(data),*q = head;if(!q)head = p;else if(p->data>q->data){p->link = head;head = p;}else{while(q->link&&p->data>q->link->data)q = q->link;if(q->link) p->link=q->link;q->link=p;}}void show(){Node<T> *p = head;while(p){cout<<p->data<<endl;p = p->link;}}};void main(){char *s = "bad";OrderedLink<char> a(s,strlen(s));a.show();a.Insert('e');a.show();}4、写出程序的运行结果#include <iostream>using namespace std;class Array{int *list;int last;int maxsize;public:Array(int n=20){maxsize = n;last = -1;list = new int[n];}~Array() {delete []list;}void print(){if(last==-1)cout<<"empty list"<<endl;else{for(int i=0;i<=last;i++) cout<<list[i]<<"";cout<<endl;}}void set(int i,int key){if(i<0||i>last) cout<<"illegal subscript!"<<endl;else list[i] = key;}void insert(int key){if(last==-1){last++;list[last]=key;}else if(last==maxsize-1) cout<<"list full"<<endl;else{for(int i=last;i>=0&&list[i]>key;i--)list[i+1] = list[i];list[i+1] = key;last++;}}};void main(){Array a(10);int m;for(int i=0;i<10;i++){cin>>m; //Aa.insert(m);}a.print();a.set(3,0);a.print();cin>>m; //Ba.insert(m);a.print();}如果A行输入4 6 1 0 9 2 6 7 5 3,B行输入8则输出的结果是四、程序填空题1、建立线性表模板,能够按照用户要求的元素个数(缺省为10个元素)创建数组、实现元素的有序插入(即将元素插入在有序数组适当位置,保持数组有序)、降序排列数组的二分查找以及数组打印。

相关文档
最新文档