![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 22.04.2015
Сообщений: 24
|
![]()
На основе вот этих функций создать интерфейс в виде меню:
#pragma once struct Element // элемент списка { Element* Prev; // указатель на предыдущий элемент Element* Next; // указатель на следующий элемент void* Data; // данные Element(Element* prev, void* data, Element* next) // конструктор { Prev = prev; Data = data; Next = next; } Element* GetNext(){return Next;}; // получить следующий Element* GetPrev(){return Prev;}; // получить предыдущий }; struct Object // блок управления списком {Element* Head; // указатель на начало списка Object() { Head = NULL; }; Element* GetFirst(){return Head;}; // получить первый элемент списка Element* GetLast(); // получить последний элемент списка Element* Search (void* data); // найти первый элемент по данным bool Insert(void* data); // добавить элемент в начало bool InsertEnd(void* data); // добавить в конец bool Delete(Element* e); // удалить по адресу элемента bool Delete(void* data); // удалить первый по данным bool DeleteList(); // очистить список void Object::PrintList(void(*f)(void*)); void Object::PrintList(void(*f)(void*),E lement*); int Object::CountList(); bool Object::DeleteDouble(); }; Object Create(); // создать список bool Object::Insert(void* data) // вставка в начало { bool rc=0; if (Head == NULL) {Head = new Element(NULL,data,Head); rc=true;} else { Head = (Head->Prev = new Element(NULL, data,Head)); rc=true;} return rc; } Element* Object::Search (void* data) // найти заданный {Element* rc = Head; while((rc != NULL) && (rc->Data != data)) rc = rc->Next; return rc; } void Object::PrintList(void(*f)(void*)) // вывод { Element* e = Head; while (e != NULL) { f(e->Data); e = e->GetNext(); }; } void Object::PrintList(void(*f)(void*), Element *e) { f(e->Data); } bool Object::Delete(Element* e) // удалить по ссылке { bool rc=0; if (rc = (e != NULL)) {if (e->Next != NULL) e->Next->Prev = e->Prev; if (e->Prev != NULL) e->Prev->Next = e->Next; else Head = e->Next; delete e; } return rc; } bool Object::Delete(void* data) // удалить по значению { return Delete(Search(data)); }; Element* Object::GetLast() { Element* e = Head, *rc = e; while (e != NULL) { rc = e; e = e->GetNext(); }; return rc; } Object Create() {return *(new Object()); } using namespace std; struct Person {char name[20]; int age; Person *next; }; void f (void* b) //функция используется при выводе { Person *a=(Person*)b; cout<<a->name<<" "<<a->age<<endl; } int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL, "Russian"); cout << "1. ..."; cout << "2. ..."; ... cin >> c; do { swith(c) { case 1: ...; case 2: ... } } return 0; } |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа со списками | NoviceYola | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 18.04.2014 11:44 |
Работа со списками | LeNZZZ | Microsoft Office Excel | 1 | 21.11.2012 17:36 |
Работа со списками | puzik_off | Фриланс | 8 | 30.12.2009 12:02 |
c++. Работа со списками | megavolt91 | Помощь студентам | 0 | 14.06.2009 21:31 |