python如何取得二维数组局部峰值
1个回答
展开全部
#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;}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询