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

Ошибка в двусвязном списке - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Что получится из кода http://www.cyberforum.ru/cpp-beginners/thread815601.html
Необходимо описать результат выполнения программы: 1) 2) 3) 4) 5)
C++ написать программу перевода введенного символа написать программу перевода введенного символа от a до f в верхний регистр, а другие символы заменять на Z http://www.cyberforum.ru/cpp-beginners/thread815600.html
C++ Написать программу проверки попадания введенного числа в диапазон
написать программу проверки попадания введенного числа в диапазон от -6 до -2
2 символа s2 последние и средние 3 символа s1 - соединить C++
Помогите пожалуйста! Ввести строки s1 и s2. Последние 2 символа s2 и средние 3 символа s1 - соединить. В полученной строке посчитать количество "1". Выводить на екран монитора: -введенные строки -Промежуточные результаты -Конечные результаты Взять во внимание такие ситуации: - Один из заданных строк(или все строки) могут быть пустыми
C++ Как изменить размер главного окна в visual studio 2005? http://www.cyberforum.ru/cpp-beginners/thread815564.html
Как изменить размер главного окна в visual studio 2005?
C++ Разработать программу «Численное интегрирование» Разработать программу «Численное интегрирование» различными методами: 1) по формуле трапеций; 2) по формуле Гаусса; 3) по формуле Чебышева помогите пожалуйста решить. за ранее благодарю подробнее

Показать сообщение отдельно
zepterman
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 27
22.03.2013, 16:06     Ошибка в двусвязном списке
Задача - сделать очередь с приоритетным исключением на основе двухсвязного списка.
Проблема в том, что элементы не всегда становяться по приоритету.
Подскажите, пожалуйста, в чем ошибка.

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
104
105
106
107
108
109
110
struct Elem
{
    int data; // просто данные
    int pri; // приоритет
    Elem * next, * prev;
};
 
class List
{
    // Голова, хвост
    Elem * Head, * Tail;
    // Количество элементов
    int Count;
 
// Получить количество
    int GetCount();
// Конструктор
    List();
// Вставка элемента
void Insert(int data, int pri);
}
 
 
int List::GetCount()
{
    return Count;
}
 
List::List()
{
    // Изначально список пуст
    Head = Tail = NULL;
    Count = 0;
}
 
void List::Insert(int data, int pri)
{
    if (Count==0)
    {
        cout<<"\ncase 1\n";
        // новый элемент
        Elem * temp = new Elem;
 
        // Предыдущего нет
        temp->prev = 0;
        // Заполняем данные
        temp->data = data;
        temp->pri=pri;
        temp->next = NULL;
        Head = Tail = temp;
        Count++;
 
    } 
    else
    {
        Elem * Ins = Head;
 
        if (pri>Ins->pri)
        {
 
            cout<<"\ncase 2\n";
            // новый элемент
            Elem * temp = new Elem;
 
            // Предыдущего нет
            temp->prev = 0;
            // Заполняем данные
            temp->data = data;
            temp->pri=pri;
            // Следующий - бывшая голова
            temp->next = Head;
 
            // Если элементы есть?
            if(Head != 0)
                Head->prev = temp;
 
            // Если элемент первый, то он одновременно и голова и хвост
            if(Count == 0)
                Head = Tail = temp;
            else
                // иначе новый элемент - головной
                Head = temp;
 
            Count++;
 
        }
        else{
            cout<<"\ncase 3\n";
            int i=0;
            for (;Ins->pri>pri && i<Count;i++)
            {
                Ins->next;
            }
        cout<<"i= "<<i<<" ";
        
        Elem * temp = new Elem;
        temp->data = data;
        temp->pri=pri;
        temp->next=Ins->next;
        temp->prev=Ins;
        Ins->next=temp;
        if (temp->next!=NULL)
        {
            temp->next->prev=temp;
        }
        Count++;
        }
    }
    
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru