|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.04.2011, 12:56 | #1 |
Пользователь
Регистрация: 28.06.2010
Сообщений: 40
|
Список
вот есть функция которая добавляет элементы в список мне надо сделать
от начала списка движешься к концу то тех пор, пока current->next > звена, которое я хочю добавить. А потом добавляю. void List::Add(int val) { Uzel *buf=new Uzel; if(head==0) { head=buf; buf->next=buf; } else { buf->next=head; Uzel *pred=find(head,n-1); pred->next=buf; } buf->value=val; n++; buf->num=n; } а вот и весь код #include "stdafx.h" #include "iostream" using namespace std; struct Uzel { int value; int num; struct Uzel *next; }; class List { private: int n; Uzel *head; public: List(); void Print_List(); void Add(int val); Uzel *find(Uzel *nach,int index); int Del_Element(int nach,int pos); }; List::List() { head=NULL; n=0; } Uzel *List::find(Uzel *nach,int index) { Uzel *first=nach; for(int i=0;i<index;i++) first=first->next; return first; } void List::Add(int val) { Uzel *buf=new Uzel; if(head==0) { head=buf; buf->next=buf; } else { buf->next=head; Uzel *pred=find(head,n-1); pred->next=buf; } head=buf; if ((buf->value)>val) {buf->value=val; n++; buf->num=n;} else {buf->value=val; n++; buf->num=n;} } int List::Del_Element(int nach,int pos) { int i=0; Uzel *buf=find(head,nach); Uzel *pred=find(buf,pos-2); Uzel *tek=find(buf,pos-1); Uzel *sl=find(buf,pos); if(tek==head) head=sl; pred->next=sl; n--; cout<<"Kaznili "<<tek->num<<" "<<tek->value<<endl; delete tek; return sl->num; } void List::Print_List() { int i=0; Uzel *buf=head; while(i<n) { cout<<"Ostalsya "<<buf->num<<" "<<buf->value<<";"<<endl; buf=buf->next; i++; } } int _tmain(int argc, _TCHAR* argv[]) { List list; int n; cout<<"Vvedite kolvo chelovek"<<endl; cin>>n; int Item; for(int i=0;i<n;i++) { cout<<"vvedite "<<i+1<<"-vo cheloveka"<<endl;; cin>>Item; list.Add(Item); } int nach; cout<<"vvedite nachalo"<<endl; cin>>nach; int index; cout<<"vvedite kashdogo kakogo nyshno kaznit"<<endl; cin>>index; for(int i=0;i<(n-1)/2;i++) { list.Del_Element(list.Del_Element(n ach,index),index); } list.Print_List(); return 0; } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Список с заглавным звеном, из текстового файла получить список из записей и по нему уже сделать задание | Zigfried | Помощь студентам | 2 | 04.10.2010 20:29 |
связать список строк и список целых чисел | lirikoff | Помощь студентам | 5 | 31.08.2010 13:23 |
C++. Односвязный список. Уничтожить список | Olya90 | Помощь студентам | 2 | 10.06.2009 18:52 |
Данные-проверка-список (список на другом листе) | Inbox | Microsoft Office Excel | 7 | 26.12.2008 01:43 |