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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2012, 21:54   #1
Freewill
Пользователь
 
Аватар для Freewill
 
Регистрация: 11.03.2011
Сообщений: 19
Вопрос Массив связных списков.

Мне нужно создать массив связных списков для обыкновенной задачи. Я в этом не разбираюсь. Как его лучше представить?

1)vector и list;
2)vector и связный список;
3)динамический массив и связный список.

А самое главное хочу узнать как забить связный список в динамический массив? Например, такой

Код:
struct node {
		int vershina; node* next;
		node(int x, node* t) {vershina=x; next=t;}
	};
Freewill вне форума Ответить с цитированием
Старый 22.02.2012, 22:34   #2
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Трудно понять, что Вы хотите.
У вас односвязный список, хотите узлы одного списка занести в массив?
Зачем, ведь любой узел списка последовательно доступен из его первого элемента.
У вас несколько односвязных списков? Занесите в массив первые элементы.
EUGY вне форума Ответить с цитированием
Старый 24.02.2012, 19:40   #3
Freewill
Пользователь
 
Аватар для Freewill
 
Регистрация: 11.03.2011
Сообщений: 19
По умолчанию

И как память потом освободить?

Последний раз редактировалось Freewill; 24.02.2012 в 20:37.
Freewill вне форума Ответить с цитированием
Старый 24.02.2012, 21:05   #4
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

как-то так:
Код:
struct node 
{
	int value; // какие-то данные от фонаря
	node *next; // указатель на следующий узел
	// конструктор по умолчанию
	node () : value (0), next(0)
	{

	}
	// перегрузка конструктора
	node (int x) : value (x), next(0)
	{

	}
};

int main(void)
{

	const int C = 10; // количество односвязных списков

	const int L = 7; // количество узлов в каждом списке

	// создать десяток списков, то есть просто создать первые элементы
	node * pRoots = new node[C];

	for (int i = C; i--;)
	{ // в каждом списке создать цепочку узлов
		node * pScan =  &pRoots[i];
		for (int j = 1; j < L; j++) //  j = 1, так как первый элемент уже был создан
			pScan = pScan->next = new node(j); 

	}

	// прочитать третий список
	node * pScan =  &pRoots[2];
	while (pScan)
	{
		std::cout << pScan->value;
		pScan = pScan->next;
	}

	// уничтожить все цепочки кроме первых элементов
	for (int i = C; i--;)
	{ 
		node * pScan =  pRoots[i].next;
		while (pScan)
		{
			node * pDel = pScan;
			pScan = pScan->next;
			delete pDel;
		}
		
	}
	// уничтожить все первые элементы
	delete [] pRoots;
	return 0;
}
EUGY вне форума Ответить с цитированием
Старый 24.02.2012, 22:01   #5
Freewill
Пользователь
 
Аватар для Freewill
 
Регистрация: 11.03.2011
Сообщений: 19
По умолчанию

Спасибо, наконец-то разберусь.
Freewill вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Восходящая сортировка связных списков слиянием. VAAKAraceGUM Общие вопросы C/C++ 0 13.02.2012 23:22
Хранение графа и динамический массив списков на C++. Fiamma Помощь студентам 8 30.10.2011 16:28
Массив списков в C stas135642 Общие вопросы C/C++ 4 16.10.2011 15:54
Указатели в связных списках[C++] Apach47 Помощь студентам 0 06.11.2010 18:08
вывод связных записей из БД Tanuska___:) БД в Delphi 7 19.05.2008 17:03