Кориткие программы по работе со строками на C++ / прогршп2
.doc10) Переместить меньшие сред.арифм. числа в начало.
struct sp { int inf;
struct sp *next;
} *F;
void func(void)
{ struct sp *T,*T1;
int sum,kol;
float m_ar;
if(F==NULL) return;
if(F->next==NULL) return;
for(T=F;T!=NULL;T=T->next)
{
sum+=T->inf;
kol++;
}
m_ar=sum/kol;
T=F;
while(T->next!=NULL)
{
T1=T->next;
if(T1->inf<m_ar) /*MEHbIIIUE*/
{
T->next=T1->next;
T1->next=F;
F=T1;
}
else
T=T->next;
}
return;
}
11) Все ‘-’ числа переместить в начало.
struct sp { int inf;
struct sp *next;
} *F;
void func(void)
{ struct sp *T,*T1;
if(F==NULL) return;
if(F->next==NULL) return;
T=F;
while(T->next!=NULL)
{
T1=T->next;
if(T1->inf<0)
{
T->next=T1->next;
T1->next=F;
F=T1;
}
else
T=T->next;
}
return;
}
12) Все + числа переместить в конец.
struct sp { int inf;
struct sp *next;
} *F;
void func(void)
{ struct sp *T,*T1,*posl,*posl1;
int min;
if(F==NULL) return;
if(F->next==NULL) return;
min=F->inf;
for(T=F->next;T!=NULL;T=T->next)
{
if(T->inf<min) min=T->inf;
if(T->next==NULL) posl=T;
}
posl1=posl;
while(F!=posl)
{
if(F->inf>0)
{
T=F;
F=F->next;
posl1->next=T;
posl1=T;
T->next=NULL;
}
else break;
}
if(F!=posl)
{
T=F;
while(T->next!=posl)
{
T1=T->next;
if(T1->inf>0)
{
T->next=T1->next;
posl1->next=T1;
posl1=T1;
T1->next=NULL;
}
else
T=T->next;
}
}
return;
}
13) Все четные и + числа переместить в начало.
struct sp { int inf;
struct sp *next;
} *F;
void func(void)
{ struct sp *T,*T1;
if(F==NULL) return;
if(F->next==NULL) return;
T=F;
while(T->next!=NULL)
{
T1=T->next;
if(T1->inf>0&&T1->inf%2==0)
{
T->next=T1->next;
T1->next=F;
F=T1;
}
else
T=T->next;
}
return;
}
14) Удалить элемент который больше первого.
struct sp { int inf;
struct sp *next;
} *F;
void func(void)
{ struct sp *T,*U;
if(F==NULL) return;
if(F->next==NULL) return;
T=F;
while(T->next!=NULL)
{
U=T->next;
if(U->inf>F->inf)
T->next=U->next;
else T=U;
}
return;
}
15) Каждый 4 элемент удалить.
struct sp { int inf;
struct sp *next;
} *F;
void func(void)
{ struct sp *T,*T1,*U;
if(F==NULL) return;
T=F->next;
while(T1->next!=NULL)
{
T1=T->next->next;
U=T1->next;
T->next->next=T1->next;
T=U->next;
}
return;
}
16) Удаляет элемент который после MIN.
struct sp { int inf;
struct sp *next;
} *F;
void func(void)
{ struct sp *T,*T1,*U;
if(F==NULL) return;
if(F->next==NULL) return;
min=F->inf;
for(T=F->next;T!=NULL;T=T->next)
if(T->inf<min) min=T->inf;
if(F->inf==min)
{
T=F->next;
F->next=T->next;
}
else
for(T=F;T->next!=NULL;T=T->next)
{
U=T->next;
if(U->inf==min)
{
T=U->next;
U->next=T->next;
break;
}
}
return;
}
17) Поменять местами соседние элементы.
struct sp { int inf;
struct sp *next;
} *F;
void func(void)
{ struct sp *T,*T1;
int tmp;
if(F==NULL) return;
if(F->next==NULL) return;
T=F;
while(T!=NULL)
{
T1=T->next;
if(T1==NULL)break;
tmp=T->inf;
T->inf=T1->inf;
T1->inf=tmp;
T=T1->next;
}
return;
}
18) Удалить элемент стоящий перед MAX.
struct sp { int inf;
struct sp *next;
} *F;
void func(void)
{ struct sp *T,*T1;
int tmp;
if(F==NULL) return;
if(F->next==NULL) return;
max=F->inf;
for(T=F->next;T!=NULL;T=T->next)
if(T->inf>max) max=T->inf;
if(F->inf==max) return; - (вроде не надо)
T=F->next;
if(T->inf==max)
{
T=F;
F=F->next;
}
T=F;
T1=F->next;
while(T1->next!=NULL)
{
U=T1->next;
if(U->inf==max)
T->next=T1->next;
else
{
T=T1;
T1=U;
}
}
return;
}
19) Удаляет К –ый элемент списка.
struct sp { int inf;
struct sp *next;
} *F;
void func(void)
{ struct sp *T,*T1;
int kol,k;
if(F==NULL) return;
printf("\n KAKOU 3LEMEHT YDALUTb ");
scanf("%d",&k);
if(k<0) return;
for(T=F;T!=NULL;T=T->next)
kol++;
if(k>kol)
{
printf("\n ERROR HET TAKOGO 3LEMEHTA !!");
return;
}
if(F->next==NULL&&k==1)
{
printf("\n spisok pust");
return;
}
if(F->next!=NULL&&k==1)
{
T=F;
F=F->next;
}
if(k==2)
{
T=F->next;
F->next=T->next;
}
T=F;
T1=T->next;
kol=2;
while(kol!=k)
{
T=T->next;
T1=T1->next;
kol++;
if(kol==k)
T->next=T1->next;
}
return;
}