Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 04.04.2007, 23:42   #1
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Списки данных

Как организовать списки? стеки/очереди?
гугл ничо вразумительного не говорит.
(Offline)
 
Ответить с цитированием
Старый 05.04.2007, 01:29   #2
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Re: Списки данных

смотри STL =) std::list, std::vector, std::map, std::hash_map, std::queue, std::stack и еще куча всякого добра =)
или те руками нада? =)
(Offline)
 
Ответить с цитированием
Старый 05.04.2007, 01:44   #3
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Списки данных

руками надо
(Offline)
 
Ответить с цитированием
Старый 05.04.2007, 12:24   #4
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Re: Списки данных

А в чем проблема?
(Offline)
 
Ответить с цитированием
Старый 05.04.2007, 15:05   #5
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Re: Списки данных

ну руками смотри в сторону связанных списков =)
он чо-то типа этого:
template<typename _Ty>
class LinkedList
{
    public:
        LinkedList * _prev;
        _Ty          _data;
        LinkedList * _next;
};
методы нужные сам напишешь =)
З.Ы. ммм, а зачем вообще те руками писать? =) чем стандартные не устраивают?
(Offline)
 
Ответить с цитированием
Старый 05.04.2007, 15:09   #6
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Списки данных

http://www.boolean.name/showthread.php?t=1253 ну вот жеш. разве не то? принцип один и тот же
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 07.04.2007, 14:24   #7
Leito
Танчики Developer
 
Регистрация: 29.01.2007
Сообщений: 539
Написано 16 полезных сообщений
(для 23 пользователей)
Re: Списки данных

все потихоньку на С++ переходят...
(Offline)
 
Ответить с цитированием
Старый 07.04.2007, 14:34   #8
johnk
Легенда
 
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений
(для 568 пользователей)
Re: Списки данных

Сообщение от Leito
все потихоньку на С++ переходят...
Это суровая правда жизни...
(Offline)
 
Ответить с цитированием
Старый 07.04.2007, 18:47   #9
Magus
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 823
Написано 101 полезных сообщений
(для 205 пользователей)
Re: Списки данных

вот моя реализация однонаправленного списка, стека и очереди на его основе. Может, где-то криво, но работает.
(Offline)
 
Ответить с цитированием
Старый 07.04.2007, 19:56   #10
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Re: Списки данных

Magus
Неплохо. Осталось написать поиск и обобщить с помощью шаблонов)
(Offline)
 
Ответить с цитированием
Старый 08.04.2007, 01:35   #11
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Списки данных

еще вопросы:
1 - чем хороши шаблоны?
2 - как с помощью них обобщать?
(Offline)
 
Ответить с цитированием
Старый 08.04.2007, 02:16   #12
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Re: Списки данных

Используя шаблон, не нужно привязываться к определенному типу.
Если, например, список написать при помощи шаблонов, можно будет создать списки любого типа, включая типы, определенные пользователем.

Так в STL сделано. И это единственно верный вариант.
(Offline)
 
Ответить с цитированием
Старый 08.04.2007, 11:21   #13
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Списки данных

http://www.boolean.name/showthread.php?t=90 пост 5-6
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 09.04.2007, 16:36   #14
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Списки данных

Вот моя реализация двунаправленных списков (отдельная спасиба Магусу за понятный и красивый код):
#include "stdafx.h"
#include <iostream.h>


class item
{
public:
	int x;
	item* next;
	item* prev;
};

class list
{
public:
	item* first;
	item* last;
//===================================================
	list(){
		first=NULL;
		last=NULL;
	}
//===================================================
	item* append()
	{
		item* temp;
		temp = new item;
		if(!first){
			first=temp;
			first->prev=NULL;
			first->next=NULL;
		}else{
			if(!last){
				last=temp;
				first->next=last;
				last->prev=first;
				last->next=NULL;
			}else{
				temp->next=NULL;
				temp->prev=last;
				last->next=temp;
				last=temp;
			}

		}
		return temp;
	}
//==================================================
	item* crash(item* el)
	{

		if(!(el->next))
		{
			if(el->prev){
			el->prev->next=NULL;
			last=el->prev;}
		}else{
			if(!(el->prev)){
				if(el->next){
				el->next->prev=NULL;
				first=el->next;}
			}else{
				el->next->prev=el->prev;
				el->prev->next=el->next;				
			}
		}
		item* ret;
		if (el->prev){ret=el->prev;}else{ret=NULL;}
		delete el;
		return ret;		
	}
};




int main(int argc, char* argv[])
{

	list l;

l.append()->x=34;
l.append()->x=10;
l.append()->x=18;
l.append()->x=20;
l.append()->x=30;
l.append()->x=34;
l.append()->x=21;

	printf("Hello World!\n");
	for (item* e=l.first;e;e=e->next)
	{
		printf("x=%d\n",e->x);
	}

	for (e=l.first;e;e=e->next)
	{
		if (!(e->x % 10)){e=l.crash(e);}
	}
	printf("===========================================\n");

	for (e=l.first;e;e=e->next)
	{
		printf("x=%d\n",e->x);
	}
	cout<<endl<<"enter char"<<endl;

	char h;
	cin>>h;
	return 1;
}
в коде мне нравиться структура типа
	for (item* e=l.first;e;e=e->next)
	{
		printf("x=%d\n",e->x);
	}
понятно и просто делаются переборы.

собственно вопрос (с которыми я наверное уже вас всех достал):
есть класс item.
у него поле данных int x;
так вот, если мне необходимо чтоб у него были поля другого типа (да и другое количество) ?
есть идея - создать класс на основе класса item, например:
class bullet : item
{
public:
	float y,z;
	float spd;
	int l;
};
, но тогда что делать с классом list, там повсюду используются указатели на класс item? создавать два новых класса, один из которых будет практически идиентичным базовому нехочецца.
может его зашаблонить? list я имею ввиду, тогда можн перегружть item как надо, чтобы можно было организовать свою структуру любой сложности.
(Offline)
 
Ответить с цитированием
Старый 09.04.2007, 19:32   #15
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Re: Списки данных

как раз надо использовать шаблоны =)
например:

template<typename _Ty>
class item
{
public:
    _Ty x;
    item* next;
    item* prev;
};
это раз, потом сам list аналогично:

template<typename _Ty>
class list
{
public:
    item<_Ty>* first;
    item<_Ty>* last;
}
ну а потом пишешь:

list<int> list1;
ну и во всех функциях поменять типы возращаемых значений и аргументов по такой же схеме =)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CSD передача данных на комьютер Mirik1 MidletPascal 8 07.11.2009 14:35
Всплывающие списки в IDE. ICoder BlitzMax 4 27.10.2008 18:39
Контейнер данных impersonalis FAQ 4 12.02.2008 18:29
Вынос данных. johnk Blitz3D 6 04.03.2007 17:27
типы и хранение данных Akima 2D-программирование 16 10.02.2006 00:45


Часовой пояс GMT +4, время: 00:59.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com