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

Односвязный список - C++

Восстановить пароль Регистрация
 
GaRiCk7
 Аватар для GaRiCk7
3 / 3 / 1
Регистрация: 09.10.2013
Сообщений: 46
11.02.2016, 22:06     Односвязный список #1
"Односвязный список 2.exe" (Win32). Загружено "C:\Users\Владислав\Documents\Visual Studio 2012\Projects\Односвязный список 2\Debug\Односвязный список 2.exe". Символы загружены.
"Односвязный список 2.exe" (Win32). Загружено "C:\Windows\SysWOW64\ntdll.dll". Невозможно найти или открыть файл PDB.
"Односвязный список 2.exe" (Win32). Загружено "C:\Windows\SysWOW64\kernel32.dll". Невозможно найти или открыть файл PDB.
"Односвязный список 2.exe" (Win32). Загружено "C:\Windows\SysWOW64\KernelBase.dll". Символы загружены.
"Односвязный список 2.exe" (Win32). Загружено "C:\Windows\SysWOW64\msvcp110d.dll". Символы загружены.
"Односвязный список 2.exe" (Win32). Загружено "C:\Windows\SysWOW64\msvcr110d.dll". Символы загружены.

P.S.
В чем проблема, не могу понять!!! В настройках я поставил, на то чтобы автоматически скачивало недостающие пакеты, пакеты скачало, результат компиляции не изменился!





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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#include <iostream>
#include <conio.h>
 
 
using namespace std;
 
struct A
{
    int key;
};
 
struct List
{
    A a;
    List *next;
 
};
 
void Print(List *b)
{
    List *print=b;
    while (print)
    {
        cout << print->a.key << " -> " ;
        print = print->next;
    }
    cout<<"NULL\n";
 
}
 
void Init(List **begin)
{
    *begin = new List;
    
    A a[5]={43,56,78,100,511};
 
    (*begin)->a.key = 20;
    (*begin)->next = NULL;
 
    List *end = *begin;
 
    for(int i=0; i<5; i++)
    {
        end->next = new List;
        end = end->next;
        end->a = a[i];
        end->next = NULL;
    }
 
 
}
 
void Add_begin(List **begin, const A &a)
{
    List *t = new List;
    t->a = a;
    t->next = *begin;
    *begin = t;
}
 
void Insert(List **begin,const A &a)
{
    List *ins = new List;
    ins->a = a;
    
    if (*begin == NULL)
    {
        ins->next = NULL;
        *begin = ins;
        return;
    }
 
    List *t = *begin;
 
    if (t->a.key > ins->a.key)
    {
        ins->next = t;
        *begin = ins;
        return;
    }
 
    List *t1 = t->next;
 
    while(t1)
    {
        if(t->a.key < ins->a.key && ins->a.key <= t1->a.key)
        {
            t->next = ins;
            ins->next = t1;
            return;
        }
    }
    t->next = ins;
    ins->next = NULL;
}
 
void Delete(List **begin, const A &a)
{
    if (*begin==NULL)
    {
        return;
    }
 
    List *t = *begin;
    if(t->a.key == a.key)
    {
        *begin = t->next;
        delete t;
        return;
    }
 
    List *t1 = t->next;
 
    while (t1)
    {
        if(t1->a.key == a.key)
        {
            t->next = t1->next;
            delete t1;
            return;
        }
        t=t1;
        t1=t1->next;
 
    }
 
}
 
void Free(List **begin)
 
{
    if (*begin==0) return;
    List *p = *begin;
    List *t;
 
    while (p)
    {
        t=p;
        p=p->next;
        delete t;
    }
    *begin = NULL;
}
 
int main()
{
 
    setlocale (LC_ALL, "Russian");
 
    List *begin = NULL;
    A a={80}, b={56};
    
    
    Init(&begin);
    Print(begin);
    Insert(&begin,a);
    Print(begin);
    Delete(&begin,b);
    Print(begin);
    Free(&begin);
    Print(begin);
 
    system("pause");
    _getch();
    return 0;
}
Вывод должен осуществляться 4 раза как показано в main, а осуществляется 1 раз, может что-то с отладчиком? Я без понятия...
Миниатюры
Односвязный список  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2016, 22:06     Односвязный список
Посмотрите здесь:

Односвязный список C++
C++ Односвязный список.
Односвязный список C++
C++ Односвязный список
C++ Односвязный список
Односвязный список C++
C++ Односвязный список
C++ Создать двусвязный список групп факультета, где каждая группа представляет собой односвязный список студентов

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
_Valera_
 Аватар для _Valera_
486 / 368 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
11.02.2016, 22:12     Односвязный список #2
C++
1
2
3
4
5
6
7
8
9
    while(t1)
    {
        if(t->a.key < ins->a.key && ins->a.key <= t1->a.key)
        {
            t->next = ins;
            ins->next = t1;
            return;
        }
    }
вероятно тут бесконечный цикл.
GaRiCk7
 Аватар для GaRiCk7
3 / 3 / 1
Регистрация: 09.10.2013
Сообщений: 46
11.02.2016, 22:16  [ТС]     Односвязный список #3
И правда, спасибо) просто забыл после цикла дописать)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
List *t1 = t->next;
 
    while(t1)
    {
        if(t->a.key < ins->a.key && ins->a.key <= t1->a.key)
        {
            t->next = ins;
            ins->next = t1;
            return;
        }
        t = t1;
        t1 = t1->next;
    }
    t->next = ins;
    ins->next = NULL;
}
Yandex
Объявления
11.02.2016, 22:16     Односвязный список
Ответ Создать тему
Опции темы

Текущее время: 09:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru