struct node
{
int count;
int data;
node* next;
};
node head;
int len;
node* creat()
{
head.next=0;
node* r=&head;
r->next=NULL;
node* p;
for( int i=0; i<len; i++)
{
int data;
cin>>data;
p=new node;
p->count=1;
p->data=data;
p->next=r->next;
r->next=p;
r=p;
}
return &head;
}
int stats()//统计每个数出现的次数并返回最大出现的次数
{
if(head.next)
{
node* p=head.next;
int max_count=head.next->count;
while(p)
{
node* s=&head;
while(s->next)
{
if(p->data==s->next->data)
{
p->count++;
}
s=s->next;
}
p->count--;
if(max_count<p->count)
max_count=p->count;
p=p->next;
}
return max_count;
}
}
void erase_max_count_data(const int& max_count)//删除众数
{
node* cur=head.next;
node* pre=&head;
while(cur)
{
if(max_count==cur->count)
{
node* r=cur;
pre->next=cur->next;
cur=cur->next;
delete r;
}
else
{
pre=cur;
cur=cur->next;
}
}
}
void show()
{
node* p=head.next;
while(p)
{
cout<<p->data;
if(p->next)
cout<<' ';
p=p->next;
}
cout<<endl;
}
void discard()
{
node* p=head.next;
while(p)
{
node* q=p;
p=p->next;
delete q;
}
}
int main()
{
while(cin>>len)
{
creat();
int ret=stats();
if(ret!=1)
erase_max_count_data(ret);
show();
discard();
}
return 0;
}
删除单链表的众数
最新推荐文章于 2022-01-12 00:23:16 发布