#include <iostream>
#include <stdlib.h>
using namespace std;
typedef struct LNode
{
int data,count;
struct LNode *next;
}Node;
Node *Create_List()
{
Node *head,*tail,*pnew;
int number;
head=(Node *)malloc(sizeof(Node));
if(head==NULL)
{
cout<<"no enough memory!"<<endl;
system("pause");
return NULL;
}
head->next=NULL;
tail=head;
cout<<"input the number(end of negative):"<<endl;
while(1)
{
cin>>number;
if(number<0)
break;
pnew=(Node *)malloc(sizeof(Node));
if(pnew==NULL)
{
cout<<"no enough memory!"<<endl;
system("pause");
return NULL;
}
pnew->data=number;
pnew->count=0;
pnew->next=NULL;
tail->next=pnew;
tail=pnew;
}
return head;
}
void Display_List(Node *head)
{
Node *p;
for(p=head->next;p!=NULL;p=p->next)
cout<<p->data<<' ';
cout<<endl;
}
void Get_Elem(Node *head,int i)
{
Node *pnew;
pnew=head->next;
int j=1;
while(pnew&&j<i)
{
pnew=pnew->next;
j++;
}
if(!pnew||j>i)
{
cout<<"no found!"<<endl;
return;
}
pnew->count++;
}
void Frequency_List(Node *head)
{
Node *p,*s,*pt;
p = head;
s = p->next;
while(p->next != NULL)
{
while(s->next != NULL)
{
if(p->next->count<s->next->count)
{
pt = p->next;
p->next = s->next;
s->next = p->next->next;
p->next->next = pt;
}
else
s = s->next;
}
p = p->next;
s = p->next;
}
}
int main()
{
Node *head;
head=Create_List();
cout<<"input the times you want to seek:"<<endl;
int n,m;
cin>>n;
while(n--)
{
cout<<"input the number you want seek:"<<endl;
cin>>m;
Get_Elem(head,m);
}
Frequency_List(head);
Display_List(head);
return 0;
}