Программирование / Лабораторные / 8 вариант 1 курс / laba 11 / отчет 11
.docМинистерство образования Российской Федерации
Пермский государственный технический университет
Кафедра ИТАС
Лабораторная работа №7.1
“ Перегрузка функций в Си++”
вариант 8
Выполнил: Белоногов М.Ю.
Проверила:Викентьева О.Л.
Пермь 2003
Постановка задачи:
Написать программу, в которой создаются динамические структуры и выполнить их обработку в соответствии с заданием.
Записи в линейном списке содержат ключевое поле типа int. Сформировать двунаправленный список. Удалить из него элемент после элемента с заданным номером, добавить К элементов в начало списка.
Функции для работы со списком:
point*make_list()
{
cout<<"\n---===Making!!!===---\n";
int n;
cout<<"kol-vo elementov v spiske: ";cin>>n;
point *p,*r,*beg;
p=new (point);
beg=p;
cout<<"element: ";cin>>p->key;
p->pred=0;p->next=0;
for(int i=1;i<n;i++)
{
r=new(point);
cout<<"elenemt: ";cin>>r->key;
p->next=r;
r->pred=p;
r->next=0;
p=r;
}
cout<<"\n";
return beg;
}
void print_list(point *beg)
{
cout<<"\n---===Printing!!!===---\n";
if (beg==0)
{
cout<<"The list is empty\n";
return;
}
point*p=beg;
while(p)
{
cout<<p->key<<" ";
p=p->next;
}
cout<<"\n\n";
}
point* del_point(point*beg, int k)
{
point *p=beg;
if(k==0)
{
beg=beg->next;
if(beg==0)return 0;
beg->pred=0;
delete p;
cout<<"\n";
return beg;
}
for(int i=0;i<k-1&&p!=0;i++,p=p->next);
if(p==0||p->next==0)return beg;
point*r=p->next;
p->next=r->next;
delete r;
r=p->next;
if(r!=0)r->pred=p;
cout<<"\n";
return beg;
}
point* add_point(point *beg,int k)
{
cout<<"\n---===Adding!!!===---\n";
point *p;
p=new(point);
cout<<"element: ";cin>>p->key;
p->next=beg;
p->pred=0;
beg->pred=p;
beg=p;
cout<<"\n";
return beg;
}
Функция main:
void main()
{
point*beg;
int i,k;
do
{
cout<<"1.Make list\n";
cout<<"2.Print list\n";
cout<<"3.Add point\n";
cout<<"4.Del point\n";
cout<<"5.Exit\n";
cin>>i;
switch(i)
{
case 1:
{beg=make_list();break;}
case 2:
{print_list(beg);break;}
case 3:
{
beg=add_point(beg,k);
break;
}
case 4:
{
cout<<"\n---===Deleting!!!===---\n";
cout<<"N: ";cin>>k;
beg=del_point(beg,k);
break;
}
}
}
while(i!=5);
}
Результаты выполнения программы:
1.Make list
2.Print list
3.Add point
4.Del point
5.Exit
1
---===Making!!!===---
kol-vo elementov v spiske: 3
element: 1
elenemt: 2
elenemt: 3
1.Make list
2.Print list
3.Add point
4.Del point
5.Exit
2
---===Printing!!!===---
1 2 3
1.Make list
2.Print list
3.Add point
4.Del point
5.Exit
3
---===Adding!!!===---
element: 5
1.Make list
2.Print list
3.Add point
4.Del point
5.Exit
2
---===Printing!!!===---
5 1 2 3
1.Make list
2.Print list
3.Add point
4.Del point
5.Exit
4
---===Deleting!!!===---
N: 2
1.Make list
2.Print list
3.Add point
4.Del point
5.Exit
2
---===Printing!!!===---
5 1 3
1.Make list
2.Print list
3.Add point
4.Del point
5.Exit
5
Press any key to continue