使用链接查找数组中的最大值
use link to find maximum in array
伙计们,下面的代码因为运行时错误而停止工作
#include<iostream>
using namespace std;
struct node
{
int item;
node *l;
node *r;
node(int x)
{
item=x; l=0;r=0;
}
};
typedef node *link;
link Max(int a[],int l,int n)
{
int m=l+(l+n)/2;
link x=new node(a[m]);
if(l==n) return x;
x->l=Max(a,l,m);
x->r=Max(a,m+1,n);
int u=x->l->item;
int v=x->r->item;
if(u>v) x->item=u;
else x->item=v;
return x;
}
int main(){
link y;
int a[]={12,3,5,4,7,6,20,11,10,9};
int n=sizeof(a)/sizeof(a[0]);
y=Max(a,0,n-1);
cout<<y->item<<endl;
return 0;
}
我不明白什么是原因,我已经声明结构节点作为必要的,使用递归函数正确我认为,什么是它不工作的另一个原因?请给我一些建议
代码给了我一个堆栈溢出异常。你对变量m
的计算是关闭的:它应该是类似于int m = l + (n-l)/2;
的东西,它会给你剩余元素的一半与l的偏移量。您当前的实现给出了[l,n]范围之外的"中点"值,因此该函数无限期递归
相关文章:
- 使用指针从C++中的数组中获取最大值
- 在二维数组中查找最小值和最大值?
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- CUDA - 将 float3 数组的 (x,y,z) 分量的最小值/最大值分开?
- 查找包含 N 个元素的数组的最小值和最大值
- 有没有一种惯用的方法可以在不存储变换或不必要地重新计算的情况下找到数组变换的最小/最大值?
- C++ 从数组中删除一个最大值和零
- 我无法显示包含整数最大值的索引. 但我可以显示数组中整数的最高值
- 使用数组将最后一个最大值更改为第一个最小值
- 练习循环和使用循环 1 次以及如何获取数组的最大值
- 如何在给定数组的任何子数组(任何大小)中找到最大值(或最小值)?
- C++数组的最大值、最小值、平均值函数
- C ++试图找到数组中每一行的最大值
- 从二维数组中查找最小值和最大值
- 数组的最大值
- 数组函数似乎没有找到最大值
- 未初始化数组中的最小值和最大值
- 用程序在C++中找到最大静态数组大小
- 最大利润数组c++多次出售
- 创建可分配的最大字符数组