顺序表[A+B->A]
题目:表A 1 3 5,表B 2 4 6,都呈非递减排序,现将两个表合并成一个表,也呈非递减排序,存放在A中(或者B中),言外之意是不能开辟新表!
拿出B中数据,沿着A的后面一直往前比较,如果小于就一直比,如果不小于就插入数据。
这样就相当于数组中的元素两两移动
while(e<A.List[j]) /*从A的最大值(末端)开始比较*/
{ /*即从后往前比较*/
A.List[j+]=A.List[j];/*两两交换*/
j--;
};
现在出现一种情况,假如A的元素值一直大于e,会导致数组越界,比如,A=4 5 6 B=1 2 3,在while循环中,j--会一直执行!
又,根据最后插入的位置,必定是在j+1这个位置上插入数据,所以,j的约束范围是:j>=-1,因此,在while循环中需要添加约束条件;
while(j>-1 && e<A.List[j])
完整代码:
void MergeList(SeqList &A,const SeqList &B)
{
int i,j;
int e;
for(i=;i<=B.length;i++) /*B有n个数据,需要n次插入操作*/
{
j=A.length-;
e=GetElem(B,i); /* 从B中取出一个数据 */
while(j>-1 && e<A.List[j]) /*从A的最大值(末端)开始比较*/
{ /*即从后往前比较*/
A.List[j+]=A.List[j];/*两两交换*/
j--;
};
A.List[j+]=e;/*插入数据*/
++A.length; /*表长度+1*/
}
}
顺序表[A+B->A]的更多相关文章
- jdk顺序表笔记
一.AbstractCollection 提供了集合的最大实现 继承该类,必须实现size()和iterator(),因为该类操作集合都是通过iterator 二.fail-fast策略 该策略在集合 ...
- c++顺序表基本功能
头文件 #define LIST_MAX_SIZE 5#define LISTINCREMENT 2#include<assert.h>#include<string>temp ...
- 数据结构:顺序表(python版)
顺序表python版的实现(部分功能未实现) #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object): def __ini ...
- 《数据结构》2.2顺序表(sequence list)
//顺序表节点的定义 typedef struct { datatype data[MAXSIZE]; //数组容量的上限 int len; //记录最后一个元素的位置,相当于一个指针,表空时len= ...
- c数据结构 顺序表和链表 相关操作
编译器:vs2013 内容: #include "stdafx.h"#include<stdio.h>#include<malloc.h>#include& ...
- java顺序表和树的实现
一.顺序表 1.线性表 //java顺序表的实现,如ArrayList就是用线性表实现的,优点是查找快,缺点是添加或删除要移动很多元素,速度慢 public class SequenceList { ...
- 数据结构顺序表删除所有特定元素x
顺序表类定义: template<class T> class SeqList : { public: SeqList(int mSize); ~SeqList() { delete[] ...
- 顺序表C语言版
#include <stdio.h> /* * 顺序表最多输入N个数 */ #define N 10 #define OK 1 #define ERROR -1 struct sequeu ...
- C#线性表之顺序表
线性表是最简单.最基本.最常用的数据结构.线性表是线性结构的抽象(Abstract), 线性结构的特点是结构中的数据元素之间存在一对一的线性关系. 这种一对一的关系指的是数据元素之间的位置关系,即: ...
- C语言 线性表 顺序表结构 实现
一个能够自动扩容的顺序表 ArrList (GCC编译). #include <stdio.h> #include <stdlib.h> #include <string ...
随机推荐
- vue-form表单验证插件
参考地址:https://segmentfault.com/q/1010000003988864 github地址:https://github.com/fergaldoyle/vue-form 安装 ...
- linux操作系统-两台linux服务器SSH免密码登录
A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), ip为192.168.100.247 ; A和B的系统都是Linux 在A上的命令 # ssh-keyg ...
- 面向服务的架构(SOA)演变图片
公司项目演变 成熟的公司项目结构 对比 总线-服务的注册与发现
- PAT 1068 万绿丛中一点红(20)(测试点分析+思路分析)
1068 万绿丛中一点红(20 分) 对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的 ...
- 如何为linux系统设置全局的默认网络代理
方法1:更改全局配置文件/etc/profile all_proxy="all_proxy=socks://proxy.xxx.com.cn:80/" ftp_proxy=&quo ...
- C++ 的虚析构函数
当一个基类的指针指向一个派生类的对象,并用该基类的指针去删除或者析构派生类对象时,如果基类的析构函数不是声明为虚函数,那么在析构时基类的析构函数将会被直接调用,派生类的析构函数应为没被调用而导致内存泄 ...
- Unix和Windows文件格式转化
可能的原因有: 1)执行权限的问题 解决方法: chmod +x ***.py 2)python版本的问题 解决方法:在执行时或者在py文件中选择好对应的Python的版本 3)python文件格式的 ...
- Spring Environment(三)生命周期
Spring Environment(三)生命周期 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Spring Envi ...
- Maven构建JavaWeb
查看java和mvn版本 java -version mvn -v D:\software\yiibai\spring-1.4.3.RELEASE>java -versionjava versi ...
- Python3实战系列之三(获取印度售后数据项目)
问题:续接上一篇.说干咱就干呀,勤勤恳恳写程序呀! 目标:实现第一个python程序的“Hello world!” 解决方案:新建一个项目Test,创建一个Test.py文件.在文件中实现打印出“He ...