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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2010, 18:44   #1
bullvinkle
Временно — юрист.
Форумчанин
 
Аватар для bullvinkle
 
Регистрация: 31.03.2008
Сообщений: 204
По умолчанию Двусвязній список С++

Со стандартными библиотеками и прочими тоннами готового кода еще раз убеждаюсь, что программист из меня никчемный)))
Во решил сам реализовать двусвязный список (на паскале когда то уже такое делал). Врод задача простая. Но не могу организовать нормальный поиск по списку.
Т.е. функия search ищет, начиная с хвоста списка, строку, которую ей задали.
Вобщем, в моей реализации она находит только в том случае, если искомый элемент находится в самом конце списка. Иначе - говорит что такого элемента нет.
Что я не так делаю?
Код:
#include <iostream>
#include <string>
using namespace std;
struct list{                   //сам список
    string data;
    list *next;
    list *prev;
    int code;
    void initialize();
    void add (string dat, int cod);
    void search(string dat);
};
void list::initialize() { //инициализация
    data = "";
    next = NULL;
    prev = NULL;
    code = 0;
    }
void list::add(string dat, int cod){  //добавление в хвост
    if (next == NULL){
        data = dat;
        code = cod;
    }
    else{
        list *newList = new list;
        next = newList;
        newList->data = dat;
        newList->code = cod;
        newList->next = NULL;
        newList->prev = this;
    }

}

void list::search(string dat){   //ПОИСК
    list *temp = this;

    while(temp!=NULL){

        if(temp->data == dat){
            cout << dat << " is in list"<<endl;
            return;
        }
        temp = temp->prev;


    }

    cout << dat << " is not in list" << endl;
}


int main(){
     list test;
     test.initialize();
     test.add("beb", 14);
     test.add("ololo", 12);
     test.add("bebebebe", 14);
     test.search("ololo");   //пишет, что нету такого - а не правильно
     test.search("bebebebe");  // есть такое, что правильно
 }

Все, решил)) Неправильно добалял и искать надо было не с хвоста, как мне казалось, а с головы

Последний раз редактировалось bullvinkle; 19.03.2010 в 02:24. Причина: Решил!!!
bullvinkle вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
список maner0k Паскаль, Turbo Pascal, PascalABC.NET 3 16.06.2009 23:55
C++. Односвязный список. Уничтожить список Olya90 Помощь студентам 2 10.06.2009 18:52
Список werser Общие вопросы C/C++ 0 27.05.2009 22:50
Данные-проверка-список (список на другом листе) Inbox Microsoft Office Excel 7 26.12.2008 01:43