Скачиваний:
21
Добавлен:
01.05.2014
Размер:
34.3 Кб
Скачать

20) Все элементы которые больше порядкового

номера поместить в другой список.

struct sp { int inf;

struct sp *next;

} *F;

strust sp *func(void)

{ struct sp *F1,*T,*T1,*posl1;

int p_n;

F1=NULL;

if(F==NULL) return;

p_n=1;

while(F!=NULL)

{

if(F->inf>p_n)

{

if(F1==NULL)

{

F1=F;

F=F->next;

posl1=F1;

posl1->next=NULL;

p_n++;

}

else

{

posl1->next=F;

posl1=F;

F=F->next;

posl1->next=NULL;

p_n++;

}

}

else break;

}

T=F;

while(T->next!=NULL)

{

T1=T->next;

p_n++;

if(T1->inf>p_n)

{

if(F1==NULL)

{

T->next=T1->next;

F1=T1;

posl1=T1;

posl1->next=NULL;

}

else

{

T->next=T1->next;

posl1->next=T1;

posl1=T1;

posl1->next=NULL;

}

}

else

T=T->next;

}

return;

}

21) Чередует 1 и 2 список, и делает 3 список.

struct sp { int inf;

struct sp *next;

} *F1,*F2;

struct sp* func(void)/* *F1,*F2-globalnie */

{ struct sp *F3,*posl3;

F3=NULL;

if(F1==NULL) return F3;

F3=F1;

posl3=F1;

F1=F1->next;

posl3->next=NULL;

while(1)

{

if(F2==NULL) return F3;

posl3->next=F2;

posl3=F2;

F2=F2->next;

posl3->next=NULL;

if(F1==NULL) return F3;

posl3->next=F1;

posl3=F1;

F1=F1->next;

posl3->next=NULL;

}

}

22) Все элементы которые четные в другой список.

struct sp { int inf;

struct sp *next;

} *F;

struct sp* func(void)

{ struct sp *F1,*T,*T1,*posl1;

while(F!=NULL)

{

if(F->inf%2==0)

{

if(F1==NULL)

{

F1=F;

F=F->next;

posl1=F1;

posl1->next=NULL;

}

else

{

posl1->next=F;

posl1=F;

F=F->next;

posl1->next=NULL;

}

}

else break;

}

T=F;

while(T->next!=NULL)

{

T1=T->next;

if(T1->inf%2==0)

{

if(F1==NULL)

{

T->next=T1->next;

F1=T1;

posl1=T1;

posl1->next=NULL;

}

else

{

T->next=T1->next;

posl1->next=T1;

posl1=T1;

posl1->next=NULL;

}

}

else T=T->next;

}

return;

}

23) Отрезает список который длинней,

а остаток помещает в третий.

struct sp { int inf;

struct sp *next;

} *F1,*F2;

struct sp* func(void)/* *F1,*F2-globalnie */

{

struct sp *F3,*T;

int k,k1,k2;

k=k1=k2=0;

F3=NULL;

for(T=F1;T!=NULL;T=T->next)

k1++;

for(T=F2;T!=NULL;T=T->next)

k2++;

if(k1==k2) return F3;

if(k1>k2)

for(T=F1,k=0;;T=T->next)

{

k++;

if(k==k2)

{

F3=T->next;

T->next=NULL;

return F3;

}

}

if(k2>k1)

for(T=F2,k=0;;T=T->next)

{

k++;

if(k==k1)

{

F3=T->next;

T->next=NULL;

return F3;

}

}

Соседние файлы в папке Кориткие программы по работе со строками на C++