顺序表[求并集 方法更新]

前文链接:http://www.cnblogs.com/tinaluo/p/5240727.html

不得不说明,水平是逐渐提高的。昨天晚上看的顺序表,在第1章,今天看第12章,重新更新了方法。
题目:表A 1  3  5,表B 2 4 6,都呈非递减排序,现将两个表合并成一个表,也呈非递减排序,存放在A中(或者B中),言外之意是不能开辟新表!

其实这种方法是很简单的,无奈敲的代码太少,缺乏认识。思路很容易理解,拿出B中数据,沿着A的后面一直往前比较,如果小于就一直比,如果不小于就插入数据。
唯一麻烦的地方在于,数据的两两移动。

这样就相当于数组中的元素两两移动

while(e<A.List[j]) /*从A的最大值(末端)开始比较*/
            {                   /*即从后往前比较*/
                A.List[j+1]=A.List[j];/*两两交换*/
                j--;
            };

现在出现一种情况,假如A的元素值一直都小于e,会导致数组越界,比如,A=1 2 3 B=4 5 6,在while循环中,j--会一直执行!

时间: 2024-10-12 13:28:34

顺序表[求并集 方法更新]的相关文章

顺序表 初始化 插入 删除 查找 合并 交换 判断为空 求长度

#include <stdio.h> #include <stdlib.h> #define OK 1 #define TRUE 1 #define ERROR -1 #define FALSE -1 #define OVERFLOW -2 #define ElemType int #define Status int typedef int ElemType typedef int Status #define LEN sizeof(SqList) #define MLC (Li

数据结构Java实现02----线性表与顺序表

[正文] 本节内容: 线性结构 线性表抽象数据类型 顺序表 顺序表应用 一.线性结构: 如果一个数据元素序列满足: (1)除第一个和最后一个数据元素外,每个数据元素只有一个前驱数据元素和一个后继数据元素: (2)第一个数据元素没有前驱数据元素: (3)最后一个数据元素没有后继数据元素. 则称这样的数据结构为线性结构. 二.线性表抽象数据类型: 1.线性表抽象数据类型的概念: 线性表抽象数据类型主要包括两个方面:既数据集合和该数据集合上的操作集合. 数据集合: 可以表示为a0,a1,a2,...a

数据结构Java实现01----线性表与顺序表

一.线性结构: 如果一个数据元素序列满足: (1)除第一个和最后一个数据元素外,每个数据元素只有一个前驱数据元素和一个后继数据元素: (2)第一个数据元素没有前驱数据元素: (3)最后一个数据元素没有后继数据元素. 则称这样的数据结构为线性结构. 二.线性表抽象数据类型: 1.线性表抽象数据类型的概念: 线性表抽象数据类型主要包括两个方面:既数据集合和该数据集合上的操作集合. 数据集合: 可以表示为a0,a1,a2,...an-1,每个数据元素的数据类型可以是任意的类型. 操作集合包括如下: 1

顺序表JAVA代码

publicclassSeqList{       final int defaultSize =10;     //默认的顺序表的最大长度     int maxSize;                      //最大长度       int size;                         //当前长度     Object[] listArray;               //对象数组         publicSeqList(){         init(defa

C#(数据结构):1.顺序表结构

我们程序员有三大优点:懒.困.自负.很荣幸我这三点都占了.但是木有关系这丝毫动摇不了我学习的决心.因为技术没有止境. -------------------------------------------------------------------------------------万恶的分割线------------------------------------------------------ 一个人生的分割线. 曾多少次我告诉自己要和昨天的自己说再见.不带走自己的过去,新中幻想着永

基于静态分配的数组的顺序表(兼具Boost单元测试)

首先,我们来搞明白几个概念吧(参考自网站数据结构及百度百科). 线性表 线性表是最基本.最简单.也是最常用的一种数据结构.线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的.线性表的逻辑结构简单,便于实现和操作.在实现线性表数据元素的存储方面,一般可用顺序存储结构和链式存储结构两种方法. 顺序表 用顺序存储方法存储的线性表简称为顺序表(Sequential List).顺序表的存储方法是把线性表的结点按逻辑次序依次存放在一组地址连续的存储单元

数据结构之顺序表(C++版)

#include <iostream>#include <stdlib.h>#define MAXLISTSIZE 100 //预设的存储空间最大容量 using namespace std; typedef string ElemType;typedef struct{ ElemType *elem; //存储空间基址 int length; //当前长度 int listsize; //允许的最大存储容量(以sizeof(ElemType)为单位)}SqList; //俗称顺序

顺序表操作补充(查找方法增加)

顺序表操作补充 二分查找 a.非递归方法实现二分查找 1 //[] 2 int BinarySearch(SeqList *pSeq, ElemType x) 3 { 4 assert(pSeq); 5 int left = 0; 6 int right = pSeq->size - 1; 7 while(left<=right) 8 { 9 int cur = left+(right-left)/2; 10 if(pSeq->array[cur] == x) 11 { 12 retur

十二、队列的实现方法三(顺序表的优化)

由于通过顺序表代码的复用实现队列的过程中,进队列要从队列的最后一个元素进入,所以造成时间复杂度加大,现通过引进front.rear优化队列实现方法 front:代表头元素的下标 rear:代表队尾下一个元素的下标 一.SeqQueue.h #ifndef _SEQQUEUE_H_ #define _SEQQUEUE_H_ typedef void SeqQueue; SeqQueue* SeqQueue_Create(int capacity);  //创建队列 void SeqQueue_De