mayashah Ответов: 2

Я думаю, проблема в функции "поиск"?


я сталкиваюсь с проблемой в функции поиска, потому что я успешно отображаю и вставляю элементы в список ,
я хочу, чтобы он искал элемент/значение в списке и отображал результат !! я получаю dont send error !!

Что я уже пробовал:

void DLL::search(int v1)
{
	Node *present = new Node;
	while (present != NULL)
	{
		if (present->data == v1)
		{
			cout << "Number Found" << endl;
		}
		else
		{
			present = present->next;
		}
	}
}


Вот основная функция

 void main()
{
	int v1, v2,v3;
	DLL myList;
	myList.insert(1);
	myList.insert(2);
	myList.insert(4);
	myList.insert(5);
	myList.insert(6);
	myList.display();
	cout << "\n";
	cout << "PLEase enter the no Before that you want  to enter a number." << endl;
	cin >> v1;
	cout << "Now enter new no." << endl;
	cin >> v2;
	myList.insertAfter(v1, v2);
	myList.display();
	cout << "\n";
	cout << "Enter Value To search in List: ";
	cin >> v3;
	myList.search(v3);
}

2 Ответов

Рейтинг:
2

Patrice T

Node *present = new Node;

Вы не ищете в списке !

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

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
16

Jochen Arndt

Вы собираетесь повторить свои ошибки:

Node *present = new Node;
должен быть
Node *present = head;


[РЕДАКТИРОВАТЬ]
И когда элемент найден, отсутствует оператор break:
void DLL::search(int v1)
{
    Node *present = head;
    while (present != NULL)
    {
        if (present->data == v1)
        {
            cout << "Number Found" << endl;
            break;
        }
        else
        {
            present = present->next;
        }
    }
}

[/РЕДАКТИРОВАТЬ]


mayashah

это не работает !! я изменил его на то, что вы сказали, но он становится рекурсивным !! и никакого результата !!

Jochen Arndt

Смотрите мой обновленный ответ.

mayashah

Спасибо, что это работает :) ура