习题1.9 有序数组的插入 (20 分)
本题要求将任一给定元素插入从大到小排好序的数组中合适的位置,以保持结果依然有序。

函数接口定义:
bool Insert( List L, ElementType X );
其中List结构定义如下:

typedef int Position;
typedef struct LNode List;
struct LNode {
ElementType Data[MAXSIZE];
Position Last; /
保存线性表中最后一个元素的位置 */
};
L是用户传入的一个线性表,其中ElementType元素可以通过>、==、<进行比较,并且题目保证传入的数据是递减有序的。函数Insert要将X插入Data[]中合适的位置,以保持结果依然有序(注意:元素从下标0开始存储)。但如果X已经在Data[]中了,就不要插入,返回失败的标记false;如果插入成功,则返回true。另外,因为Data[]中最多只能存MAXSIZE个元素,所以如果插入新元素之前已经满了,也不要插入,而是返回失败的标记false。

裁判测试程序样例:
#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 10
typedef enum {false, true} bool;
typedef int ElementType;

typedef int Position;
typedef struct LNode List;
struct LNode {
ElementType Data[MAXSIZE];
Position Last; /
保存线性表中最后一个元素的位置 */
};

List ReadInput(); /* 裁判实现,细节不表。元素从下标0开始存储 /
void PrintList( List L ); /
裁判实现,细节不表 */
bool Insert( List L, ElementType X );

int main()
{
List L;
ElementType X;

L = ReadInput();
scanf("%d", &X);
if ( Insert( L, X ) == false )printf("Insertion failed.\n");
PrintList( L );return 0;

}

/* 你的代码将被嵌在这里 */

输入样例1:
5
35 12 8 7 3
10
输出样例1:
35 12 10 8 7 3
Last = 5
输入样例2:
6
35 12 10 8 7 3
8
输出样例2:
Insertion failed.
35 12 10 8 7 3
Last = 5
bool Insert( List L, ElementType X ){if(L->Last+1==MAXSIZE)return false;for (int i=0; i<=L->Last; i++) {if(L->Data[i]==X)return false;else if (L->Data[i]<X) {for (int j=L->Last; j>=i; j--) {L->Data[j+1]=L->Data[j];}L->Data[i]=X;L->Last=L->Last+1;//不要忘记长度加一break;}else if(i==L->Last&&L->Data[i]>X){L->Data[L->Last+1]=X;L->Last=L->Last+1;//不要忘记长度加一break;}}return true;
}

习题1.9 有序数组的插入 (20 分)相关推荐

  1. 浙大版《数据结构(第2版)》题目集 习题1.9 有序数组的插入 (20 分) 二分解法

    习题1.9 有序数组的插入 (20 分) 本题要求将任一给定元素插入从大到小排好序的数组中合适的位置,以保持结果依然有序. 函数接口定义: bool Insert( List L, ElementTy ...

  2. 6-2 有序数组的插入 (20分)

    6-2 有序数组的插入 (20分) 本题要求将任一给定元素插入从大到小排好序的数组中合适的位置,以保持结果依然有序. 函数接口定义: bool Insert( List L, ElementType ...

  3. C语言在一个有序数组里插入一个元素,使其成为一个新的有序数组

    C语言在一个有序数组里插入一个元素,使其成为一个新的有序数组 #include<stdio.h> int main(){int a[11] = { 1,5,8,9,25,26,31,35, ...

  4. 有序数组中插入元素依然保持有序

    有序数组中插入元素依然保持有序 如何在一个有序数组中插入元素,使得数组依然保持有序,废话不多说直接上代码(C/C++) 如何在一个有序数组中插入元素,使得数组依然保持有序,废话不多说直接上代码(C/C ...

  5. 递增有序顺序表的插入 (20分) 实验目的:1、掌握线性表的基本知识 2、深入理解、掌握并灵活运用线性表。3、熟练掌握线性表的存储结构及主要运算的实现 已知顺序表L递增有序,将X插入到线性表的适当位置

    递增有序顺序表的插入 (20分) 实验目的:1.掌握线性表的基本知识 2.深入理解.掌握并灵活运用线性表.3.熟练掌握线性表的存储结构及主要运算的实现 已知顺序表L递增有序,将X插入到线性表的适当位置 ...

  6. C语言向有序数组中插入一个数使该数组仍保持有序

    C语言向有序数组中插入一个数使该数组仍保持有序 #include<stdio.h> int main() {     int n,i,j,t,k;     printf("您喜欢 ...

  7. C语言:向一个有序数组中插入一个数据,并保持数组的有序性。

    C语言:向一个有序数组中插入一个数据,保持数组的有序性. #include <stdio.h> //向一个有序数组中插入一个元素,重新实现有序,并输出. int main() {//注意数 ...

  8. C语言:浙大版《C语言程序设计(第3版)》题目集 习题5-6 使用函数输出水仙花数 (20 分)

    其他题目详见:浙大版<C语言程序设计(第3版)>题目集 一.题目描述: 习题5-6 使用函数输出水仙花数 (20 分) 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和 ...

  9. 习题5-4 使用函数求素数和 (20 分)

    习题5-4 使用函数求素数和 (20 分) 本题要求实现一个判断素数的简单函数.以及利用该函数计算给定区间内素数和的函数. 素数就是只能被1和自身整除的正整数.注意:1不是素数,2是素数. 函数接口定 ...

最新文章

  1. Java线程安全 关于原子性与volatile的试验
  2. [转载]《博客园精华集》Winform筛选结果(共105篇)
  3. Variational Inference
  4. phpcms v9二次开发之模型类的应用(1)
  5. 计算器显示代码java_java编写的计算器源代码
  6. 创建一个java项目
  7. cname 别名记录 解析过程_西部数码操作解析:如何为服务器创建别名地址
  8. 一个把时间戳转成日期的javascript函数
  9. Linux部署安装JDK和Tomcat
  10. [python]pytest实现WEB UI自动化
  11. 查看SQLSERVER内部数据页面的小插件Internals Viewer
  12. 长沙北大青鸟:北大青鸟培训学士后课程让大学生重回就业春天
  13. iphone震动反馈怎么设置,怎么设置开启苹果手机ios12打字时的震动反馈
  14. 群晖Video Staiton套件 安卓TV端使用教程
  15. 2022年制冷与空调设备运行操作最新解析及制冷与空调设备运行操作作业考试题库
  16. 国际碳行动伙伴组织(ICAP)全球碳市场进展资料2019
  17. webrtc远程教学系统
  18. linux怎么进mysql天气_在Linux 命令行下浏览天气预报
  19. 《死亡诗社》经典台词欣赏(转)
  20. miniGUI编译详细过程以及示例

热门文章

  1. Pytorch上采样函数 包括interpolate
  2. 基于直方图均衡化的激光水下图像处理
  3. 实用!你不知道的小技巧,电脑快速实现屏幕长截图
  4. OSPF中第一类外部路由和第二类外部路由的区别
  5. Cissp-【第3章 安全工程】-2021-2-20(248页-268页)
  6. Failed to initialize NSS library
  7. ajax技术运用案例,第12篇:Ajax技术与项目案例
  8. linux 连接远程命令行,screen命令行远程连接
  9. 线程池 java 新建方式_Java线程池的四种创建方式
  10. 三阶矩阵的lu分解详细步骤_数学 - 线性代数导论 - #4 矩阵分解之LU分解的意义、步骤和成立条件...