Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/34: Рейтинг темы: голосов - 34, средняя оценка - 4.59
1 / 1 / 0
Регистрация: 25.12.2010
Сообщений: 77

Поиск элемента в списке

06.01.2012, 01:24. Показов 7011. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добавьте в класс списков метод int Search(T x) для поиска зна-
чения x в списке. Метод должен возвращать номер узла со значением x
или -1, если x не содержится в списке.

прошу,помогите,пожалуйста.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.01.2012, 01:24
Ответы с готовыми решениями:

Поиск элемента в списке
Добрый день! У меня есть набор некоторых значений, например такой: ("0",...

Поиск элемента в списке
Здравствуйте, нужно написать функцию, которая будет вы водить на экран позицию элемента из списка. Сам элемент для поиска вводиться...

Поиск элемента в списке.
Есть список, который содержит объекты класа type. Мне нужно найти в этом списке объект, который будет отвечать некоторым условиям. Пробую...

7
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
06.01.2012, 01:28
В сферическом списке в вакууме?
0
1 / 1 / 0
Регистрация: 25.12.2010
Сообщений: 77
06.01.2012, 01:43  [ТС]
NoMasters, односвязный линейный список

вот класс списков
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
class List{ // Класс списков
   Node *first; // Указатель на первое звено
   Node *last; // Указатель на последнее звено
public:
List( ) // Конструктор по умолчанию 
{ first = 0; last = 0; } // создает пустой список 
~List( ); // Деструктор
bool Empty( ) const // Проверка, не пуст ли список
{ return (first = = 0); }
T& Front( ){ return first->d; } // Ссылка на первый элемент
void Push_Front(T Val); // Вставить новое звено в начало списка
void Push_Back(T Val); // Вставить новое звено в конец списка 
T Pop_Front( ); // Удаление первого звена
size_t Size( ); // Количество звеньев списка
class Iterator{ // Класс итераторов списка
Node* curr; // Указатель на текущее звено списка
public:
Iterator(Node *pn = 0) // Конструктор создает итератор
{ curr = pn; } // по указателю pn на звено списка
Iterator(Iterator& p) // Конструктор копирования
{ curr = p.curr; }
Node& operator*( ) // Доступ к текущему звену
{ return *curr; }
Node* operator->( ) // Указатель на текущее звено списка
{ return curr;  }
Iterator& operator++( ) // Префиксный инкремент
{ // Используется в виде  ++p
curr = curr->next; // Возвращает итератор на 
return *this; // следующее звено списка
}
Iterator operator++(int) // Постфиксный инкремент
{  // Используется в виде  p++
Iterator tmp = *this; // tmp – копия текущего итератора
curr = curr->next; // Изменение текущего итератора
return tmp; // Возвращение предыдущего значения итератора
}
bool operator= =(Iterator p) // Сравнение итераторов на равенство
{ return curr = = p.curr; }
bool operator!=(Iterator p) // Сравнение итераторов на неравенство
{ return curr != p.curr; }
}; // Конец объявления класса Iterator
Iterator Begin( ) // Получение итератора 
{ return Iterator(first); } // на первое звено списка
Iterator End( ) // Получение итератора на звено списка, 
{ return Iterator(0); } // следующее за последним звеном
Iterator InsertAfter(Iterator p, T val); // Вставка звена после итератора
void EraseAfter(Iterator p); // Удаление звена после итератора p
};
void PrintList(List& L, char delimiter = ' '); // Вывод списка
#endif
0
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
06.01.2012, 01:55
У тебя есть итераторы, обходи по ним список и сравнивай значения, какие проблемы?
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
06.01.2012, 12:27
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int Search(T x) const
{
    int i = 0;
 
    for(Node* p = first; p != NULL; p = p->next)
    {
        if(p->d == x)
            return i;
        ++i;
    }
 
    return -1;
}
Добавлено через 2 минуты
C++
1
2
Node& operator*( ) // Доступ к текущему звену
{ return *curr; }
Вот так должно быть
C++
1
2
3
4
T& operator*()
{
    return curr->d;
}
0
1 / 1 / 0
Регистрация: 25.12.2010
Сообщений: 77
06.01.2012, 15:57  [ТС]
rangerx, заменить 2-ое на 3-ье?зачем?
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
06.01.2012, 18:07
Цитата Сообщение от besbyblik Посмотреть сообщение
заменить 2-ое на 3-ье?зачем?
В смысле? Что "2-ое на 3-ье"? У вас operator* в классе Iterator должен возвращать ссылку на данные хранящиеся в списке, а не на ветвь. Это же касается и operator->, он также должен возвращать указатель на данные. В том и смысл итераторов, что они позволяют перебирать элементы без учёта реализации самого контейнера. Они предоставляют доступ только к данным.
Конструктор копирования тоже записан неверно, он должен иметь такой вид
C++
1
Iterator(const Iterator& p) // Конструктор копирования
Вот такой код с использованием итератора у вас должен отработать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main()
{
    List list;
 
    // тип T в списке должен быть определён как int
    // вообще, для выбора типа используются шаблоны, но у вас, как я понимаю это typedef
    for(int i = 1; i <= 10; ++i)
        list.Push_Back(i);
 
    // вывод списка на экран
    for(List::Iterator iter = list.Begin(); iter != list.End(); ++iter);
        std::cout << *iter << "\n";
}
0
0 / 0 / 0
Регистрация: 14.05.2013
Сообщений: 2
19.12.2013, 17:05
rangerx, привет. есть небольшой вопрос по программе.
надеюсь заметишь это сообщение...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.12.2013, 17:05
Помогаю со студенческими работами здесь

Поиск элемента в двусвязном списке
Подскажите пожалуйста. Нужно пройти по списку и найти слово по первой букве, запомнить адрес, и начиная от этого адреса пройтись влево и...

Поиск элемента в двусвязном списке
Элемент двусвязного списка точка(x,y). Нужно написать функцию для нахождения максимально удаленной точки от центра координат. ...

Поиск нужного элемента в односвязном списке
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; struct Node { int data; Node* next; };

Реализовать поиск максимального элемента в двусвязном списке
Помогите пожалуйста доделать код. Вместо блока удаление нужен осуществить поиск максимального элемента :help: #include...

Вставка элемента в заданную позицию, удаление элемента по заданной позиции, поиск заданного элемента
Добавить в класс &quot;Односвязный список&quot; следующие функции: вставка элемента в заданную позицию, удаление элемента по заданной позиции, поиск...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru