Здравствуйте ПОМОГИТЕ ПОЖАЛУЙСТА с 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; } } }
|
|