[英]creating a array dynamic in heap using struct of Array
下面的代碼用於合並到 arrays,這里的問題是它沒有在堆中動態創建數組,因此 arr3 可用於合並兩個 arrays。
#include <iostream>
using namespace std;
struct Array{
int a[10];
int size;
int length;
};
void Display(Array arr){
cout<<"Elements in array are ";
for(int i=0;i<arr.length;i++){
cout<<arr.a[i]<<" ";
}
cout<<"\n\n\n";
}
Array* MergeArrays(Array *arr1,Array *arr2){
int i,j,k;
i=j=k=0;
//here not creating an array in heap
Array *arr3=new Array;
while(i<arr1->length && j<arr2->length){
if(arr1->a[i]<arr2->a[j]){
arr3->a[k++]=arr1->a[i];
}else{
arr3->a[k++]=arr2->a[j];
}
}
for(;i<arr1->length;i++){
arr3->a[k++]=arr1->a[i++];
}
for(;i<arr2->length;j++){
arr3->a[k++]=arr2->a[j++];
}
arr3->length=arr1->length+arr2->length;
arr3->size=20;
return arr3;
}
int main()
{
Array arr1={{24,5,33,2,7,3},20,6};
Array arr2={{22,6,8,12,15,9},20,6};
Array *arr3;
arr3=MergeArrays(&arr1,&arr2);
Display(*arr3);
}
請幫助通過合並 arr1 和 arr2 的長度在堆中動態創建數組
創建一個動態數組結構被傳遞給 arr3 指針。
顯示 function 后調用打印 arrays 的合並
有很多問題。
struct 中的數組太小
詮釋一個[10];
只能容納 10 個元素,但您有 2 * 6 = 12 個要保存的元素。
您可能打算這樣做:
int a[10];
您似乎想以排序方式合並 arrays ,但這需要從一開始就對輸入進行排序。
缺少索引增量
而(ilength && jlength){
if(arr1->a[i]<arr2->a[j]){ arr3->a[k++]=arr1->a[i]; }else{ arr3->a[k++]=arr2->a[j]; }
}
你在哪里改變i
和j
?
你可能想要
while(i<arr1->length && j<arr2->length){
if(arr1->a[i]<arr2->a[j]){
arr3->a[k++]=arr1->a[i++];
}else{
arr3->a[k++]=arr2->a[j++];
}
}
但...
如果在 C++ 中編碼,請不要執行上述代碼!
C++ 具有std::vector
可以為您完成所有這些工作 - 以及更多。 例如 - 與您的struct
不同 - std::vector
(自動)在需要時會增大大小。 將它與“算法庫”中的函數一起使用,您將在幾分鍾內完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.