python如何取得二维数组局部峰值

 我来答
司马刀剑
高粉答主

2018-06-25 · 每个回答都超有意思的
知道顶级答主
回答量:4.6万
采纳率:93%
帮助的人:7576万
展开全部


#include<stdio.h>#include <stdlib.h>#include <limits.h>#include<malloc.h>#define maxsize 6 //每个波形数据最大采集个数  默认6 typedef struct array1{    int *data;    struct array1 *next;}ARR1;ARR1 *addNewArr(ARR1 *arrHead,ARR1 *arrTail);//插入一组波形数据节点 返回尾节点int findMaxF(ARR1 *arrHead);//查找最大峰值int removeMinF(ARR1 *arrHead);//移除最小峰值数据组   返回最小峰值void printfArr(ARR1 *arrHead);//打印数据链表 int main(){    ARR1 *arrHead=(ARR1 *)malloc(sizeof(ARR1));    arrHead->next=NULL;    ARR1 *arrTail=NULL;     arrTail=addNewArr(arrHead,arrTail);//想插入几组,就调用几次  我就测试6组    arrTail=addNewArr(arrHead,arrTail);    arrTail=addNewArr(arrHead,arrTail);    arrTail=addNewArr(arrHead,arrTail);    arrTail=addNewArr(arrHead,arrTail);    arrTail=addNewArr(arrHead,arrTail);     printf("采集的原数据组为:\n");    printfArr(arrHead);    printf("最大峰值:%d,最小峰值值:%d\n",findMaxF(arrHead),removeMinF(arrHead));    printf("删除最小峰值数据组后的数据为:\n");    printfArr(arrHead);    return 0;}  void printfArr(ARR1 *arrHead)//打印数据链表{    while(arrHead->next!=NULL)    {        printf("%d,%d,%d,%d,%d,%d\n",arrHead->next->data[0],arrHead->next->data[1],arrHead->next->data[2],arrHead->next->data[3],arrHead->next->data[4],arrHead->next->data[5]);        arrHead=arrHead->next;    }}ARR1 *addNewArr(ARR1 *arrHead,ARR1 *arrTail)//插入一组波形数据   返回尾节点{    int *data=(int *)malloc(sizeof(int)*maxsize),i;    printf("采集一组波形数据(最大采集个数%d):",maxsize);    for(i=0;i<maxsize;i++)        scanf("%d",&data[i]);     ARR1 *arrNew=(ARR1 *)malloc(sizeof(ARR1));    arrNew->data=data;    arrNew->next=NULL;     if(arrHead->next==NULL)//插入第一组数组 作为首节点        arrHead->next=arrNew;    else        arrTail->next=arrNew;     arrTail=arrNew;    return arrTail;}int findMaxF(ARR1 *arrHead)//查找最大峰值{    int i,maxNum=0,maxf=0;    while(arrHead->next!=NULL)    {        maxNum=0;        for(i=0;i<maxsize;i++)//获取每组数据的峰值        {            if(arrHead->next->data[i]>maxNum)                maxNum=arrHead->next->data[i];        }        if(maxNum>maxf)//获取最大峰值            maxf=maxNum;        arrHead=arrHead->next;    }    return maxf;}int removeMinF(ARR1 *arrHead)//移除最小峰值数据组   返回最小峰值{    int i,maxNum=0,minf=INT_MAX;    ARR1 *minDataSave=NULL,*arrHeadSave=arrHead;    while(arrHead->next!=NULL)    {        maxNum=0;        for(i=0;i<maxsize;i++)//获取每组数据的峰值        {            if(arrHead->next->data[i]>maxNum)                maxNum=arrHead->next->data[i];        }        if(maxNum<minf)//获取最小峰值        {            minDataSave=arrHead->next;            minf=maxNum;        }        arrHead=arrHead->next;    }     arrHead=arrHeadSave;    //移除最小峰值数据组    while(arrHead->next!=NULL)    {        if(arrHead->next==minDataSave)//删除节点重组链表        {            arrHead->next=minDataSave->next;            minDataSave->next=NULL;            free(minDataSave->data);//释放节点内存            free(minDataSave);            break;        }        arrHead=arrHead->next;    }     return minf;}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式