将两个指针数组合并到 C++ 中的第三个指针数组中

某物

arr1,arr2 是两个指针数组,我必须将它们合并到 arr3 中。当程序获得 arr3[1] (当 k=1 时)程序关闭时,我不明白为什么。

请帮忙。

class Node {
public:
    Node* left;
    T data;
    Node* right;
    int height;
};
    void mergeArrays(Node<T>** arr1,Node<T>** arr2,int len1,int len2){
        int p=0,q=0,k=0;
        Node<T>** arr3 = new Node<T>*[len1+len2];
        
        while ( p < len1 && q < len2) {
                if ((arr1[p])->data< (arr2[q])->data) {
                    (arr3[k++])->data = (arr1[p++])->data;
    
                } else {
                    
                    (arr3[k++])->data = (arr2[q++])->data;    
                }  
            
            }
       
            while ( p < len1) {
                (arr3[k++])->data = (arr1[p++])->data;
            }
            while ( q < len2) {
         
                (arr3[k++])->data = (arr2[q++])->data; 
            }
    
            
            
    }
沃兹克雷格

你不是在复制指针。您正在将值从某个对象的一个data​​成员复制到某个对象的另一个data成员。但问题是,那里没有“那里”可以复制. 您为 分配了一个指针床arr3,但这些指针后面没有对象,因此:

(arr3[k++])->data = (arr1[p++])->data;

调用未定义的行为。

我相当肯定这就是你的目标:

template<class T>
Node<T>** mergeArrays(Node<T> **arr1, Node<T> **arr2, int len1, int len2)
{
    int p = 0, q = 0, k = 0;
    Node<T> **arr3 = new Node<T> *[len1 + len2];

    while (p < len1 && q < len2)
    {
        if ((arr1[p])->data < (arr2[q])->data)
        {
            arr3[k++] = arr1[p++];
        }
        else
        {
            arr3[k++] = arr2[q++];
        }
    }

    while (p < len1)
    {
        arr3[k++] = arr1[p++];
    }
    while (q < len2)
    {
        arr3[k++] = arr2[q++];
    }

    return arr3;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将 2 个数组的排序合并到 C 中的第三个数组中

如何将char数组的特定索引传递给outtextxy()函数在c中的第三个参数

将两个不同数组的元素合并到第三个数组

我在C中的(char *)元素数组上有三个循环。为什么第三个失败?

我需要用c语言将两个char数组组合成第三个char数组

C ++如何将Vector的两个对象合并,合并,相交到新的第三个对象中?

使用 stdlib.c 中的 qsort() 根据每个 *char 中的第三个字母对 C 中的字符串数组进行排序

使用C ++从.txt中读取第三个坐标

如何在地图c ++中获取第三个元素(从头到尾)

使用Oracle MERGE INTO将两个表中的数据合并到第三个表中

将两个json数组合并到PHP

使用CROSS JOIN将两个表合并到现有的第三个表中-

从两个数组中获取正数,然后从中创建第三个

C中的第二个和第三个gets()函数不起作用

使用2个数组在numpy中填充第三个数组

如何添加两个不等数组的每个元素并将其存储在第三个数组中?

在C ++中,其他两个不同的共享库是否可以从第三个共享库访问Singleton?

如何连接两个字符串并保存在C中的第三个变量中?

PHP将2个数组合并为第三个数组

C中的数组和指针,两个问题

将两个不同的数据类列表合并到第三个 Kotlin

从基于第三个平面数组的对象数组中创建对象选择

Pandas 将多个目录中的 Excel 文件合并到第三个目录中

如何在第三个数组中对两个数组的值进行分组?

Java映射两个数组中的数据并将其插入第三个数组

检索和更新函数,用于在第三个数组中求和两个数组

比较两个数组,并用第三个数组中的值替换重复项

将两个 Maven 模块合并到一个 jar 中,并让第三个模块在指定位置生成 jar

如何将两个Excel工作表中的所有行合并到第三个工作表中?