Скачиваний:
55
Добавлен:
10.12.2013
Размер:
40.45 Кб
Скачать

Министерство образования Российской Федерации

Пермский государственный технический университет

Кафедра ИТАС

Лабораторная работа №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

Соседние файлы в папке laba 11
  • #
    10.12.20133.42 Кб51laba 11.dsp
  • #
    10.12.2013539 б52laba 11.dsw
  • #
    10.12.201341.98 Кб51laba 11.ncb
  • #
    10.12.201348.64 Кб51laba 11.opt
  • #
    10.12.2013761 б51laba 11.plg
  • #
    10.12.201340.45 Кб55отчет 11.doc