{
current=current->down;
return 1;
};
return 0;
};
//Esli pred. element sdelalsa tekuschim return 1, else 0
int list::previous_element()
{
if (current->up)
{
current=current->up;
return 1;
};
return 0;
};
int list::num_current()
{
if(current==NULL)return 0;
int i(1);
element* temp=current;
while (temp->up!=NULL)
{
i++;
temp=temp->up;
};
return i;
};
char* list::read_element()
{
return current->info;
};
char* list::read_element(int &k)
{
int i;
i=current_element(k);
if ((i<k)&&(i!=0))
{
cout<<"V spiske vsego "<<i<<" elmentov. Po etomu vmesto "<<k<<" elementa, functsia vozvrashchaet "<<i<<" element!!!\n";
k=i;
};
return current->info;
};
void list::init_list(int k, char* str)
{
if (k==0) return;
int f(2);
char* s;
s=new char[strlen(str)+7];
if (first!=NULL)
{
cout<<"Spisok ne pust!!!\n";
cout<<"Chto delat?(0/1/2)\n";
cout<<" 0)Otmenit initsializatsiu;\n";
cout<<" 1)Dopisat fonarnuu infomatsiu v konets spiska;\n";
cout<<" 2)Zamenit spisok novoi fonarnoi informatsyei.\n";
cin>>f;
};
if(f==0) return;
if(f==1) current=last;
if(f==2)
{
del_list();
first=new element[1];
first->info=new char[strlen(str)+3];
sprintf(first->info,"%s 1",str);
first->up=first->down=NULL;
current=last=first;
};
for (int j=f; j<=k; j++)
{
sprintf(s,"%s %d",str,j);
add_after(s);
};
return;
};
void list::print_list()
{
cout<<"Vmestimoe spiska:\n";
element* temp=first;
if (first==NULL)
{
cout<<"Spisok pust!!!\n";
return;
};
do
{
cout<<"| "<<temp->info<<" |";
temp=temp->down;
}
while (temp);
cout<<"\n";
return;
};
int list::fput_list(char* s)
{
FILE* f;
if ((f=fopen(s,"w+"))==NULL)
{
cout << "Can not open file "<<s<<"\n";
return 0;
};
if (!first) fclose(f);
element* temp=first;
do
{
fputs(temp->info,f);
fputs("\n",f);
temp=temp->down;
}
while (temp);
fclose(f);
return 1;
};
int list::fget_list(char* s)
{
int ff=2;
if (first!=NULL)
{
cout<<"Spisok ne pust!!!\nChto delat?(0/1/2)\n 0)Otmenit vostanovlenie iz faila;\n";
cout<<" 1)Vostanovit infomatsiu iz faila v konets spiska;\n";
cout<<" 2)Zamenit spisok informatsyei iz faila.\n";
cin>>ff;
};
if(!ff) return ff;
FILE* f;
if ((f=fopen(s,"r"))==NULL)
{
cout<<"Can not open file "<<s<<"\n";
return 0;
};
char str[255];
if(ff==1)
current=last;
char *sss;
if(ff==2)
del_list();
while (fgets(str,256,f))
{
sss=new char[strlen(str)];
int j=0;
while(str[j]!='\n')
sss[j]=str[j++];
sss[j]='\0';
add_after(sss);
delete [] sss;
};
fclose(f);
return ff;
};
#endif
#include "list_.h"
void main()
{
int n=16;
cout<<"Rozhdenie spiska...\n";
list s;
char a[255];
strcpy(a,"Seha");
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list();
cout<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
cout<<"Skol'ko proinitsializirovat' elementov spiska?\nn=";
cin>>n;
cout<<"Initsialitsia spiska...\n";
s.init_list(n,a);
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list();
cout<<"\nTekuschiy element spiska: ";
cout<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();//clear iostream
getchar();
cout<<"Kakoi element v spiske sdelat' tekeschim?\nn=";
cin>>n;
s.current_element(n);
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Skol'ko elementov dobavit'?\n";
cin>>n;
getchar();//clear iostream
for (int i=0; i<n; i++)
{
cout<<"Vvedite stroku dlja dobavlenija v spisok\n";
gets(a);
cout<<"Dobavlenie posle tekuschego...\n";
s.add_after(a);
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
};
cout<<"Delaem tekuschim sledujushiy element...\n";
s.next_element();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
cout<<"Skol'ko eschje elementov spiska nuzhno dobavit'?\n";
cin>>n;
getchar();//clear iostream
for (int i=0; i<n; i++)
{
cout<<"Vvedite stroku dlja dobavlenija v spisok\n";
gets(a);
cout<<"Dobavlenie do tekuschego...\n";
s.add_before(a);
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
};
cout<<"Skol'ko eschje elementov spiska nuzhno dobavit'?\n";
cin>>n;
getchar();//clear iostream
for (int k,i=0; i<n; i++)
{
cout<<"Vvedite stroku dlja dobavlenija v spisok\n";
gets(a);
cout<<"Vvedite nomer elementa, na kakoe mesto nuzhno dobavit' novyi element\n";
cin>>k;
cout<<"Dobavlenie "<<k<<"-togo elementa...\n";
s.add_element(a,k);
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();//clear iostream
getchar();
};
cout<<"Kakoi element v spiske sdelat' tekeschim?\nn=";
cin>>n;
s.current_element(n);
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Skol'ko elementov udalit'?\n";
cin>>n;
getchar();//clear iostream
for (int i=0; i<n; i++)
{
cout<<"Udalenie tekuschego...\n";
s.del_element();
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
};
cout<<"Skol'ko eschje elementov spiska nuzhno udalit?\n";
cin>>n;
getchar();//clear iostream
for (int k,i=0; i<n; i++)
{
cout<<"Vvedite nomer elementa, kotoryi nuzhno udalit'\n";
cin>>k;
cout<<"Udalenie "<<k<<"-togo elementa...\n";
s.del_element(k);
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();//clear iostream
getchar();
};
cout<<"Zapis' spiska v fail...\n";
s.fput_list("Seha.lsm");
cout<<"Udalenie spiska...\n";
s.del_list();
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
cout<<"Vostanovlenie spiska...\n";
s.fget_list("Seha.lsm");
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
cout<<"Delaem tekuschim predyduschiy element...\n";
s.previous_element();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
cout<<"Press <Enter> for exit...";
getchar();
};
Результат:
D:\Studies\Labs\Programing\Labs\Cpp\Individ_6\ind2>ind2
Rozhdenie spiska...
Vmestimoe spiska:
Spisok pust!!!
Vsego elementov v spiske: 0
Tekuschiy element spiska: 0
Press <Enter> for go on...
Skol'ko proinitsializirovat' elementov spiska?
n=9
Initsialitsia spiska...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 9
Tekuschiy element spiska: 9
Press <Enter> for go on...
Kakoi element v spiske sdelat' tekeschim?
n=6
Vsego elementov v spiske: 9
Tekuschiy element spiska: 6
Skol'ko elementov dobavit'?
3
Vvedite stroku dlja dobavlenija v spisok
Sveta 1
Dobavlenie posle tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Seha 7 || Seha 8
|| Seha 9 |
Vsego elementov v spiske: 10
Tekuschiy element spiska: 7
Press <Enter> for go on...
Vvedite stroku dlja dobavlenija v spisok
Sveta 2
Dobavlenie posle tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Seha 7
|| Seha 8 || Seha 9 |
Vsego elementov v spiske: 11
Tekuschiy element spiska: 8
Press <Enter> for go on...
Vvedite stroku dlja dobavlenija v spisok
Sveta 3
Dobavlenie posle tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta
3 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 12
Tekuschiy element spiska: 9
Press <Enter> for go on...
Delaem tekuschim sledujushiy element...
Vsego elementov v spiske: 12
Tekuschiy element spiska: 10
Press <Enter> for go on...
Skol'ko eschje elementov spiska nuzhno dobavit'?
3
Vvedite stroku dlja dobavlenija v spisok
Svitlana 1
Dobavlenie do tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta
3 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 13
Tekuschiy element spiska: 10
Press <Enter> for go on...
Vvedite stroku dlja dobavlenija v spisok
Svitlana 2
Dobavlenie do tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta
3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 14
Tekuschiy element spiska: 10
Press <Enter> for go on...
Vvedite stroku dlja dobavlenija v spisok
Svitlana 3
Dobavlenie do tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta
3 || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 15
Tekuschiy element spiska: 10
Press <Enter> for go on...
Skol'ko eschje elementov spiska nuzhno dobavit'?
3
Vvedite stroku dlja dobavlenija v spisok
I
Vvedite nomer elementa, na kakoe mesto nuzhno dobavit' novyi element
10
Dobavlenie 10-togo elementa...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta
3 || I || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 16
Tekuschiy element spiska: 10
Press <Enter> for go on...
Vvedite stroku dlja dobavlenija v spisok
like
Vvedite nomer elementa, na kakoe mesto nuzhno dobavit' novyi element
11
Dobavlenie 11-togo elementa...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta
3 || I || like || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 17
Tekuschiy element spiska: 11
Press <Enter> for go on...
Vvedite stroku dlja dobavlenija v spisok
you!!!
Vvedite nomer elementa, na kakoe mesto nuzhno dobavit' novyi element
12
Dobavlenie 12-togo elementa...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta
3 || I || like || you!!! || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 ||
Seha 9 |
Vsego elementov v spiske: 18
Tekuschiy element spiska: 12
Press <Enter> for go on...
Kakoi element v spiske sdelat' tekeschim?
n=4
Vsego elementov v spiske: 18
Tekuschiy element spiska: 4
Skol'ko elementov udalit'?
3
Udalenie tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta 3 || I ||
like || you!!! || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 17
Tekuschiy element spiska: 4
Press <Enter> for go on...
Udalenie tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 6 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || yo
u!!! || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 16
Tekuschiy element spiska: 4
Press <Enter> for go on...
Udalenie tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || you!!! || Sv
itlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 15
Tekuschiy element spiska: 4
Press <Enter> for go on...
Skol'ko eschje elementov spiska nuzhno udalit?
3
Vvedite nomer elementa, kotoryi nuzhno udalit'
2
Udalenie 2-togo elementa...
Vmestimoe spiska:
| Seha 1 || Seha 3 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || you!!! || Svitlana 3 |
| Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 14
Tekuschiy element spiska: 2
Press <Enter> for go on...
Vvedite nomer elementa, kotoryi nuzhno udalit'
12
Udalenie 12-togo elementa...
Vmestimoe spiska:
| Seha 1 || Seha 3 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || you!!! || Svitlana 3 |
| Svitlana 2 || Svitlana 1 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 13
Tekuschiy element spiska: 12
Press <Enter> for go on...
Vvedite nomer elementa, kotoryi nuzhno udalit'
12
Udalenie 12-togo elementa...
Vmestimoe spiska:
| Seha 1 || Seha 3 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || you!!! || Svitlana 3 |
| Svitlana 2 || Svitlana 1 || Seha 9 |
Vsego elementov v spiske: 12
Tekuschiy element spiska: 12
Press <Enter> for go on...
Zapis' spiska v fail...
Udalenie spiska...
Vmestimoe spiska:
Spisok pust!!!
Vsego elementov v spiske: 0
Tekuschiy element spiska: 0
Press <Enter> for go on...
Vostanovlenie spiska...
Vmestimoe spiska:
| Seha 1 || Seha 3 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || you!!! || Svitlana 3 |
| Svitlana 2 || Svitlana 1 || Seha 9 |
Vsego elementov v spiske: 12
Tekuschiy element spiska: 12
Press <Enter> for go on...
Delaem tekuschim predyduschiy element...
Vsego elementov v spiske: 12
Tekuschiy element spiska: 11
Press <Enter> for go on...
Press <Enter> for exit...
D:\Studies\Labs\Programing\Labs\Cpp\Individ_6\ind2>
Seha.lsm:
Seha 1
Seha 3
Sveta 1
Sveta 2
Sveta 3
I
like
you!!!
Svitlana 3
Svitlana 2
Svitlana 1
Seha 9