Форум программистов, компьютерный форум CyberForum.ru

Связный список, почему не работает поиск - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать два класса: Celsius, Fahrenhate (означающие температуру в соответствующей шкале) http://www.cyberforum.ru/cpp-beginners/thread759807.html
7 заданий. После завтра нужно сдать... 1. Написать два класса: Celsius, Fahrenhate (означающие температуру в соответствующей шкале) с конструктором инициализации со значением температуры в качестве входного параметра и двумя конструкторами копирования: один из экземпляра Celsius в создаваемый экземпляр Fahrengate, и один наоборот для создания экземпляра класса Celsius. При конструировании должно...
C++ Помогите решить тест на C++ Господа, приветствую. Ситуация следующая: решил я восстановиться в институте, но по семейным обстоятельствам восстановился только неделю назад, т.е. уже под конец семестра. Кое-как меня восстановили и за пропущенный материал выдали тесты и один из них: основы программирования С++. Скажу прямо, учусь я не на программиста, а это просто скорее всего базовые знания на 4 часа лекций. Теоретическую... http://www.cyberforum.ru/cpp-beginners/thread759803.html
C++ Класс Int имитирующий встроенный тип int
Создать класс Int (с заглавной буквы) имитирующий встроенный тип int и позволяющий следующие конструкции: Int i = 0; i = i+1; i++; i=i+i; i.vivod();//Вывод значения на консоль
Создать класс Tabl (таблица умножения) C++
1. Создать класс Tabl, выводящий таблицу умножения (10х10) в cout при создании экземпляра этого класса т.е. из конструктора. 2. Добавить конструктор инициализации, определяющий размерность таблицы умножения, отличающуюся от размерности по умолчанию (например, 5х5). 3. Написать метод класса, возвращающий среднее значение таблицы умножения. 4. Рассматривая таблицу умножения (класс Tabl) как...
C++ Нахождение одинаковых чисел в массиве http://www.cyberforum.ru/cpp-beginners/thread759780.html
Здрасьте всем, есть небольшой вопрос. Имеется массив из пяти элементов. Необходимо найти в нем пары одинаковых чисел. Сортировка массива недопустима. Ниже я представил мой вариант решения, но он не работает, если в массиве есть 3 и более одинаковых числа. Укажите, пожалуйста, мне на мои ошибки и подскажите правильный вариант решения задачи. #include <iostream> #include <cstdlib> #include...
C++ Создать класс, наследованный от предыдущего Задача: Разработать класс SortedArray - упорядоченный массив целых чисел, наследованный от класса Array. Замечание: Сортировку массива необходимо производить после любого изменения его составляющих. Соотвественно необходимо перегрузить метод доступа к его компонентам. Как написать этот наследованный массив? И не понятно про перегрузку метода доступа к его компонентам. класс array,... подробнее

Показать сообщение отдельно
mmd
13 / 13 / 1
Регистрация: 17.05.2012
Сообщений: 80
13.01.2013, 11:55  [ТС]     Связный список, почему не работает поиск
Цитата Сообщение от Croessmah Посмотреть сообщение
Зависает?
да зависает
перед этим выводит значения которые передал в список, точнее добавил

Добавлено через 1 минуту
вообще у кого нибудь есть реализация списка полная, если не сложно скиньте сюда

Добавлено через 16 часов 7 минут
Цитата Сообщение от I.M. Посмотреть сообщение
И где деструктор?
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <iostream>
using namespace std;
 
class Node{
public:
    int data;
    Node * next;
    Node *prev;
 
    Node(int x){
        data = x;
        next = NULL;
        prev=NULL;
    }
    Node(int x, Node * y, Node *z){
        data = x;
        next = y;
        prev=z;
    }
};
 
 
class linkedList{
    Node *head;
public:
    linkedList(){
        head = NULL;
    }
    void addNode(int value){
        Node *p;
        if(head == NULL)
            head = new Node (value, NULL, NULL);
        else{
            p=head;
            while(p->next !=NULL)
                p=p->next;
            p->next = new Node (value, NULL, NULL);
        }
    }
    void print(){
        Node * p;
        p = head;
        while(p != NULL){
            cout << p->data << "\n";
            p = p->next;
        }
    }
 
    void search(int k)
    {
        Node* p = list_search(head,k);
 
        if (p) cout << endl << p->data << endl;
        else cout << endl << "no" << endl;
    }
 
    Node* list_search(Node *head,int k)
    {
        Node *p = head;
 
        while(p && p->data != k)
        {
            p = p->next;
        }
        return p;
    }
    void delete_list_elem(int k)
    {
        Node *i=list_search(head, k);
        list_delete(head,i);
    }
 
    void list_delete(Node *head, Node *k)
    {
        if(k->prev!=NULL)
        {
            (k->prev)->next=k->next;
        }
        else
        {
            head=k->next;
        }
        if(k->next!=NULL)
        {
            (k->next)->prev=k->prev;
        }
    }
 
};
 
 
int main(void){
    linkedList test;
    test.addNode(4);
    test.addNode(76);
    test.addNode(12);
    test.print();
    test.search(70);
    test.delete_list_elem(76);
    cout << "\n";
    test.print();
    return(0);
}
вот написал функцию удаления, но когда вывожу на экран после удаления всеравно не удаляет
и что написать в деструкторе
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru