//判断一个无序数列是否为等差数列
#include <iostream>
using namespace std;
typedef struct node{
int key;//key用来记录是否为等差,0代表是,1代表不是
struct node* next;
}node,*Linklist;
void mysort(int a[],int n){
int i,j,k,temp;
for(i=0;i<n;i++){
k=i;
for(j=i+1;j<n;j++){
if(a[j]<a[k]) k=j;
}
if(k!=i){
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
}
int main(){
int n,i,num;
Linklist L,p,q;
L=(Linklist)malloc(sizeof(node));
L->next=NULL;
p=L;
while(1){
cout<<"输入n的值:";
cin>>n;
if(n==0){//n等于0代表输入结束,执行输出yes和no的语句
p=L->next;
while(p!=NULL){
if(p->key==1)
cout<<"yes";
else if(p->key==0)
cout<<"no";
p=p->next;
}
break;
}
int a[1000];
cout<<"输入数列中元素(元素两两之间以空格隔开):";
for(i=0;i<n;i++){
cin>>a[i];
}
mysort(a,n);
q=(Linklist)malloc(sizeof(node));
q=p->next;
q->next=NULL;
num=a[1]-a[0];
for(i=1;i<n;i++){
if(a[i]-a[i-1]!=num){//说明不是等差数列,直接跳出
q->key=0;
break;
}
}
if(i==n){//说明是等差
q->key=1;
}
p=q;
}
return 0;
}