基础数据结构-线性表-顺序表的合并操作

因为最近笔记本B面裂了准备去修,复杂些的会优先加上注释,所以在家先把代码和题目贴上来以后补文字,有疑问可以在下面留言。

顺序表的合并操作

题目描述
建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000)

已知两个递增序列,把两个序列的数据合并到顺序表中,并使得顺序表的数据递增有序
输入
第1行先输入n表示有n个数据,接着输入n个数据,表示第1个序列,要求数据递增互不等

第2行先输入m表示有m个数据,接着输入m个数据,表示第2个序列,要求数据递增互不等
输出
顺序表内容包括顺序表的实际长度和数据,数据之间用空格隔开

第1行输出创建后的顺序表内容

样例输入
3 11 33 55
5 22 44 66 88 99

样例输出
8 11 22 33 44 55 66 88 99

#include<iostream>
using namespace std;

#define ok 0
#define error -1

class SeqList{
private:
    int *list;
    int maxsize;
    int size;
public:
    SeqList();
    ~SeqList();
    int list_size();
    int list_insert(int i,int item);
    int list_del(int i);
    int list_get(int i);
    void list_display();
    int get(int i);        //新建get函数
};
SeqList::SeqList()
{
    maxsize  = 1000;
    size = 0;
    list = new int[maxsize];
}
SeqList::~SeqList()
{
    delete []list;
}

int SeqList::list_size()
{
    return size;
}

void SeqList::list_display()
{
    int i;
    cout << size << ‘ ‘;
    for(i=0;i<size-1;i++)
        cout << list[i] << ‘ ‘;
    cout << list[size-1] << ‘ ‘ << endl;
}

int SeqList::list_insert(int i,int item)    //优化了一下,在主函数插入时加了1
{
    if(i<1||i>size+1)
        return error;
    else{
        int n;
        for(n=size;n>=i;n--)
            list[n] = list[n-1];
        list[i-1] = item;
        size++;
        return ok;
    }
}

int SeqList::list_get(int i)
{
    if (i<1||i>size)
        return error;
    else
    {
        cout << list[i-1] << endl;
        return ok;
    }
}

int SeqList::get(int i){
    return list[i];
}

int main()
{
    int i,j,size,item;
    SeqList LA,LB;    //思路:将要合并的两组数据放入两个线性表中,上下匹配,遇到较大的数据放后,最终合并到B
    cin >> size;
    for(i=1;i<=size;i++)
    {
        cin >> item;
        LA.list_insert(i,item);
    }
    cin >> size;
    for(i=1;i<=size;i++)
    {
        cin >> item;
        LB.list_insert(i,item);
    }
    for(i=0;i<=LA.list_size()-1;i++)
    {
        for(j=0;j<=LB.list_size()-1;j++)
        {
            if(LA.get(i)<=LB.get(j))
            {
                LB.list_insert(j+1,LA.get(i));
                break;
            }
            if(j==LB.list_size()-1)
            {
                LB.list_insert(j+2,LA.get(i));
                break;
            }
        }
    }
    LB.list_display();
    return 0;
}
时间: 2024-12-22 01:37:12

基础数据结构-线性表-顺序表的合并操作的相关文章

数据结构和算法-数据结构-线性结构-顺序表 链表和哈希表

####################################################### """ # 线性表是最基本的数据结构之一,在实际程序中应用非常广泛,它还经常被用作更复杂的数据结构的实现基础. # 根据线性表的实际存储方式,分为两种实现模型: # 顺序表, # 链表, # 下面分别进行研究, """ ####################################################### &qu

java实现数据结构-线性表-顺序表,实现插入,查找,删除,合并功能

package 顺序表; import java.util.ArrayList; import java.util.Scanner; public class OrderList { /** * @param args * @author 刘雁冰 * @2015-1-31 21:00 */ /* * (以下所谓"位置"不是从0开始的数组下标表示法,而是从1开始的表示法.) * (如12,13,14,15,16数据中,位置2上的数据即是13) * * 利用JAVA实现数据结构-线性表-顺

C++数据结构与算法_2_线性表 --顺序表的应用示例

h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { font-family: "微软雅黑"; font-size: 16pt; }h2.ctl { font-family: "AR PL UMing CN"; font-size: 16pt; }h1 { margin-bottom: 0.21cm; }h1.western { fon

C++数据结构与算法_1_线性表 --顺序表的实现与分析

顺序表的实现与分析 引 --线性表的抽象基类: template <typename T> class LinearList { public: LinearList(); ~LinearList(); virtual int Size() const = 0; //返回线性表所能够存储的最大长度 virtual int Length() const = 0; //当前线性表的长度 virtual int Search(T &x) const = 0; virtual int Loca

线性表——顺序表与单链表学习小结

线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列. 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表.链表.栈.队列.字符串... 线性表在逻辑上是线性结构,也就说是连续的一条直线.但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储. 顺序表 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储.在数组上完成数据的增删查改. 链表 链表是一种物理存储结构上非连续.非顺序的存储结构,数据

数据结构笔记(二)--顺序表

线性表 线性结构:最常用,最简单的一种数据结构,其中的数据元素是有序且是有限的,其 基本特点: 存在一个唯一的被称为 第一个 的数据元素 存在一个唯一的被称为 最后一个 的数据元素 除第一个元素外,每一个元素均有唯一 一个直接前驱 除最后一个元素外,每一个元素均有唯一 一个直接后继 2.1 线性表的逻辑结构 2.1.1线性表的定义 线性表(Linear List) :是由n个数据类型相同的数据元素(结点)组成的有限序列.其中 n 为不小于0的整数.数据元素的个数 n 称为线性表的长度 相关术语:

【数据结构】之顺序表和链表的比较

1.顺序表 顺序表的优点: (1) 方法简单,各种高级语言中都有数组,容易实现.(2) 不用为表示结点间的逻辑关系而增加额外的存储开销.(3) 顺序表具有按元素序号随机访问的特点. 顺序表的缺点: (1) 在顺序表中做插入删除操作时,平均移动大约表中一半的元素,因此对n较大的顺序表效率低.(2) 需要预先分配足够大的存储空间,估计过大,可能会导致顺序表后部大量闲置:预先分配过小,又会造成溢出. 2.链表 链表的优点: (1) 在链表中做插入删除操作时,不会影响前面和后面的节点,因此对n较大的链表

线性表&gt;&gt;顺序表---&gt;逆置所有元素

1 /*顺序表中所有的元素逆置 2 * 3 */ 4 #include <iostream.h> 5 using namespace std; 6 7 int main(){ 8 void reverse_arr(int arr[],int n); 9 int a[]={0,1,2,3,4,5,6,7}; 10 int n=7; 11 reverse_arr(a,n); 12 for(int i=0;i<=n;i++){ 13 cout << a[i] << &q

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

人生总有那么多未完的篇章,但是有时候今天你没完成的可能你以后再也不会完成.承诺的一切兴许也变成了过眼云烟.想抓住,握紧的拳头却使他们溜的更快.人生恰如初见,几多的欣喜. ----------------------------------------------------------------------------------------------万恶的分割线------------------------------------------------ 分割线都受不了了.好吧之前我们说

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

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