习题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

AC代码

bool Insert( List L, ElementType X )
{if(L->Last >= MAXSIZE - 1) return false;//个数溢出int l = 0,r = L->Last;if(X>=L->Data[l])//X比数组中所有数都大,先右移所有元素,再插入到数组0位置{for(int i = L->Last;i>=0;i--){L->Data[i+1] = L->Data[i];}L->Data[0] = X;L->Last++;return true;}if(X<=L->Data[r])//x比数组中所有数都小,直接放到数组最右端末尾{L->Data[++L->Last] = X;return true;}while(l<r)//二分过程{int mid = (l+r)/2;if(X>L->Data[mid]) r = mid;else if(X==L->Data[mid]) return false;else l = mid + 1;}for(int i = L->Last;i>=r;i--){L->Data[i+1] = L->Data[i];}L->Data[r] = X;L->Last++;return true;
}

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

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

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

  2. 浙大版《C语言程序设计(第3版)》题目集习题5-6 使用函数输出水仙花数 (20 分) 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1 ​3 ​​ +

    水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身.例如: ​​ . 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所 ...

  3. 【PTA|Python】浙大版《Python 程序设计》题目集:第六章

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...

  4. 【PTA|Python】浙大版《Python 程序设计》题目集:第七章

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...

  5. 浙大版《Python 程序设计》题目集 4~7章

    写在前面: 有编程基础的同学可以直接刷(不会语法再看文档,若没有那就边看书边刷 浙大版<Python 程序设计>题目集4~7章 题目链接:浙大版<Python 程序设计>题目集 ...

  6. C语言:浙大版《C语言程序设计(第3版)》题目集 习题5-5 使用函数统计指定数字的个数 (15 分)

    其他题目详见:浙大版<C语言程序设计(第3版)>题目集 一.题目描述: 习题5-5 使用函数统计指定数字的个数 (15 分) 本题要求实现一个统计整数中指定数字的个数的简单函数. 函数接口 ...

  7. C语言:浙大版《C语言程序设计(第3版)》题目集 练习5-1 求m到n之和 (10 分)

    其他题目详见:浙大版<C语言程序设计(第3版)>题目集 一.题目描述: 本题要求实现一个计算m~n(m<n)之间所有整数的和的简单函数. 函数接口定义: int sum( int m ...

  8. 【PTA|Python】浙大版《Python 程序设计》题目集:第五章

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...

  9. 【PTA|Python】浙大版《Python 程序设计》题目集:第四章(适合Pythno新手的基础练习题集)

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...

最新文章

  1. 手动部署OpenStack环境(二:CentOS6.6虚拟机的安装及配置)
  2. 如何将github存储库回滚到特定提交?
  3. 学校通用计算机保护,浅谈学校计算机教室软件系统的保护.docx
  4. 练字格子纸模板pdf_这么好用的模板,我要好好保存下来!
  5. 小米申请雷军签名商标获批
  6. 应用场景之Dynamic End Point(DEP)IPSec的配置
  7. 机器学习入门笔记(七):聚类
  8. 小米路由器3g改无线打印机服务器,小米路由器3G怎么设置?
  9. C++ 遇到reference to ' *** ' is ambiguous 错误
  10. 知网研学打不开?一片空白怎么办?一步解决
  11. 旅行者1号探测器已飞出太阳系
  12. ubuntu 13.10 skype登不上问题
  13. 用c语言编写程序相似性检测,程序代码相似性检测在论文抄袭判定中的应用
  14. Mac OS 系统用不了Origin怎么办?
  15. python hashlib库(MD5,sha1,sha256,sha512,pbkdf2_hmac)用法及pbkdf2原理
  16. 站在新的起点上,扬帆起航
  17. 201671010434 王雯涵《英文文本统计分析》结对项目报告
  18. 图形学基础|基于SDF的卡通阴影图
  19. Visio设计系统结构框图(拓扑图) 教程
  20. 高考砸了,人生还有戏吗?

热门文章

  1. 皮尔逊相关系数与p值
  2. Contest3143 - 2021级新生个人训练赛第36场_B: 数字游戏
  3. robot_pose_ekf源码解读
  4. Excel VBA 根据图片名称插入对应图片
  5. 4位数码管中间的冒号c语言,单片机4位数码管电子时钟(带闹钟,冒号为秒闪烁)...
  6. nmi_watchdog功能测试及解析
  7. 整数按位异或运算 C语言
  8. 微信公众号开发之微信公众平台与公众号第三方平台区别
  9. Git Flow 使用指南
  10. Win10作为共享主机与机顶盒子共享