用了qsort就过,看来我自己写的quicksort有问题
先根据num排序,看是否和序列的两边相同,找出和两边不同的最小的index
#include<stdio.h>
#include<stdlib.h>
struct list{
int num;
int index;
} *stu;
int cmp( const void *a ,const void *b)
{
return (*(struct list *)a).num > (*(struct list *)b).num ? 1 : -1;
}
int main(){
int n,i,max;
int *a;
scanf("%d",&n);
stu = (struct list*)malloc(sizeof(struct list)*n);
a = (int *)malloc(sizeof(int)*n);
for(i = 0;i<n;i++){
scanf("%d",&stu[i].num);
a[i] = stu[i].num;
stu[i].index = i;
}
qsort(stu,n,sizeof(stu[0]),cmp);
max = n+1;
for(i = 0;i<n;i++){
if(i == 0&&stu[i].num!=stu[i+1].num||i == n-1&&stu[i].num!=stu[i-1].num||i>0&&i<n-1&&stu[i].num!=stu[i-1].num&&stu[i].num!=stu[i+1].num)
if(stu[i].index<max)
max = stu[i].index;
}
if(max<n)
printf("%d\n",a[max]);
else printf("None\n");
free(a);
free(stu);
return 0;
}