Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2015, 18:50   #1
Ти6ка
Пользователь
 
Регистрация: 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;
}
Ти6ка вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со списками 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