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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2015, 16:54   #1
Ти6ка
Пользователь
 
Регистрация: 22.04.2015
Сообщений: 24
Сообщение 2 функции

Нужно написать 2 функции: int Object::CountList() - подсчет элементов списка, Object OneByOne(Object &to, Object &from1, Object &from2) - функцию, которая формирует список to, включив в него поочередно элементы из списков from1 и from2.

Код:
#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*), Element*);
	int Object::CountList();
	bool  Object::DeleteDouble();
};

Object Create();                           // создать список

Object OneByOne(Object &to, Object &from1, Object &from2);

#include "stdafx.h"
#include <iostream>
#include "List.h" 

using namespace std;

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());
}

bool Object::DeleteList()
{
	bool r = false;
	Element* t = GetLast();
	if (t)
	{
		if (t->Prev != NULL)
			t->Prev->Next = t->Next;
		else
			Head = t->Next;
		delete t;
		DeleteList();
	}
	return r = true;
}

int Object::CountList()
{
	struct Element *t;
	int n = 0;
	while (t->Next != NULL)
	{
		n += t;
	}
	return n;
}

Object OneByOne(Object &to, Object &from1, Object &from2)
{
	
}
____
Код нужно форматировать тегами!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 27.04.2015 в 17:06.
Ти6ка вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функции в языке С. Передача параметров в функции. Создание многофайловых проектов fifaman Общие вопросы C/C++ 6 28.12.2014 15:30
Табулирование заданной функции и определение максимального и минимального значения функции в таблице Марина1986 C/C++ Сетевое программирование 0 07.05.2013 11:31
Использование подпрограммы-функции: Вычислить значение функции (Турбо паскаль) RealUnited Паскаль, Turbo Pascal, PascalABC.NET 1 05.12.2012 20:34
Построение графика функции, мигание(затухание) шарика в минимумах функции kas1m_rus Паскаль, Turbo Pascal, PascalABC.NET 0 27.05.2012 20:28
Как подменить адрес возврата функции func на адрес функции f используя переполнение буфера buf и функции gets dmitrii6120 Помощь студентам 6 14.11.2011 20:10