Здравствуйте ПОМОГИТЕ ПОЖАЛУЙСТА с 3 и 4 заданием
1.Организовать два связных списка по m случайных элементов диапазона от -5 до 5, использую дункцию создания списка с помощью генератора случайных чисел.
2. Вывести оба списка на экран. В функцию вывода добавить подсчет элементов.
3. В первом списке удалить узлы с нулевым значением, а во втором списке - узлы со значением 1.
4. Слить оба списка в один простым сцеплением. Вывести на экран.
#include <vcl.h>
#include<iostream.h>
#include<conio.h>
#pragma hdrstop
#include <tchar.h>
//---------------------------------------------------------------------------
struct List
{
int data;
List *next;
};
typedef List* LPtr;
LPtr Head=NULL;
int m,i,z;
void Show(LPtr H);
LPtr Form(int n);
void outs(LPtr H);
void del(LPtr &H,int r);
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
cout<<"Vvedite s klaviaturbI m"<<endl;
cin>>m;
cout<<"\n";
LPtr Head=Form(m);
cout<<"Spisok pervbIi: \n";
LPtr Hop=Form(m);
Show(Head);
del(Head, 0);
cout<<"\n Spisok vtoroi: \n";
Show(Hop);
del(Hop, 1);
getch();
return 0;
}
//---------------------------------------------------------------------------
void Show(LPtr H)
{
LPtr tmp=H;
while(tmp)
{
cout<<tmp->data<<"\t";
tmp=tmp->next;
}
}
LPtr Form(int n)
{
LPtr L,t;
if(n<0) return NULL;
L=new List;
L->data=rand()%5;
L->next=NULL;
t=L;
for(int i=0;i<n;i++)
{
t->next=new List;
t=t->next;
t->data=rand()%11-5;
t->next=NULL;
}
return L;
}
void outs(LPtr H)
{
z=0;
LPtr tmp=new List;
while (tmp)
{
z++;
cout<<tmp->data<<'\t';
tmp=tmp->next;
}
cout<<"\nkolichestvo elementov:"<<z<<endl;
}
void del(LPtr &H,int r)
{
LPtr tmp=H;
if(H->data==r)
{
H=H->next;
delete tmp;
}
LPtr pred=H;
while(tmp)
{
if(tmp->data!=r)
{
pred=tmp;
tmp=tmp->next;
}
else
{
pred->next=tmp->next;
delete tmp;
}
}
}