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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2015, 14:22   #1
vova_makr
Пользователь
 
Регистрация: 25.09.2015
Сообщений: 42
По умолчанию найти в односвязном списке количество элементов

Нужно найти в односвязном списке количество елементов:
Мое решение:
Код:
struct SinglyLinkedList
{
	struct Node
	{
		int value;
		Node* nextNode;
	};
	Node* head;
	Node* tail;
};

unsigned GetSize(SinglyLinkedList* list)
{
	int size =0;
	for (SinglyLinkedList::Node* node = list->head; node != nullptr; node = node->nextNode)
		size += size;
	return size;
}
SinglyLinkedList* CreateSinglyLinkedList()
{
	SinglyLinkedList* list = (SinglyLinkedList*)malloc(sizeof(SinglyLinkedList));
	list->head = nullptr;
	list->tail = nullptr;

	return list;
}
int main()
{
SinglyLinkedList* list =  CreateSinglyLinkedList();
	InsertFirst(list, 5);
	InsertFirst(list, 4);
	InsertFirst(list, 6);
	InsertFirst(list, 8);
	Print(list);

	int size = GetSize(list);
		printf("%d \n", size);

	Release(list);
        int size = GetSize(list);
		printf("%d \n", size);
return 0;
}
Програма зациклываеться. Где я сделал ошибку?

Последний раз редактировалось vova_makr; 24.10.2015 в 16:04.
vova_makr вне форума Ответить с цитированием
Старый 24.10.2015, 15:45   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Что-то я не пойму твой код... А вот нескромный вопрос: а почему не сделал классом?
Или зачем в SinglyLinkedList все упаковал?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.10.2015, 15:58   #3
vova_makr
Пользователь
 
Регистрация: 25.09.2015
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Что-то я не пойму твой код... А вот нескромный вопрос: а почему не сделал классом?
Или зачем в SinglyLinkedList все упаковал?
Я в 1 посту додал код
Задание у меня такое: написать структуру SinglyLinkedList, и найти пощитать количество значений в списку.
Меня интересует только, правильно ли я сделал это:
Код:
unsigned GetSize(SinglyLinkedList* list)
{
	int size =0;
	for (SinglyLinkedList::Node* node = list->head; node != nullptr; node = node->nextNode)
		size += size;
	return size;
}

Последний раз редактировалось vova_makr; 24.10.2015 в 16:04.
vova_makr вне форума Ответить с цитированием
Старый 24.10.2015, 16:18   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
правильно ли я сделал это
Ну так то вроде все логично.
Нужно поставить бряк и проверить.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.10.2015, 16:24   #5
vova_makr
Пользователь
 
Регистрация: 25.09.2015
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну так то вроде все логично.
Нужно поставить бряк и проверить.
По брекпоинту показывает 0 значение почемуто((

переделал , и поставил чтобы выводило после каждой итерации , у меня зацыклюеться програма((
Код:
unsigned GetSize(const SinglyLinkedList* list)
{
	int size =0;
	for (SinglyLinkedList::Node* node = list->head; node != nullptr;)
		printf("%d", ++size);
	return size;
}

Последний раз редактировалось vova_makr; 24.10.2015 в 16:47.
vova_makr вне форума Ответить с цитированием
Старый 24.10.2015, 16:51   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
правильно ли я сделал это
Дык ты забыл node = node->nextNode
Покажи полностью текст программы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.10.2015, 16:51   #7
vova_makr
Пользователь
 
Регистрация: 25.09.2015
Сообщений: 42
По умолчанию

все я нашел багу, ось код правильный:
Код:
unsigned GetSize(const SinglyLinkedList* list)
{
	int size =0;
	for (SinglyLinkedList::Node* node = list->head; node != nullptr; node = node->nextNode)
		++size;
	return size;
}
vova_makr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление узлов в односвязном списке Niklitel Помощь студентам 1 01.03.2014 14:41
Последовательный поиск в односвязном списке vo0vka Помощь студентам 2 01.12.2012 23:49
Очистка памяти в односвязном списке Sigwey Помощь студентам 0 28.12.2010 17:02
Поиск в односвязном списке DOJ Общие вопросы C/C++ 6 04.10.2009 13:34
Обмен местами 2х элементов в односвязном списке. amdbodia Общие вопросы C/C++ 4 31.05.2009 23:26