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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
GaRiCk7
3 / 3 / 1
Регистрация: 09.10.2013
Сообщений: 52
#1

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

11.02.2016, 22:06. Просмотров 175. Ответов 2
Метки нет (Все метки)

"Односвязный список 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++):

Сформировать список из 10 книг, используя динамическую структуру данных односвязный список - C++
друзья спасайте Сформировать список из 10 книг, используя динамическую структуру данных односвязный список С++

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

Задали односвязный линейный список с целыми числами. Создать новый список, который содержит элементы заданного списка в обратном порядке - C++
Задали односвязный линейный список с целыми числами. Создать новый список, который содержит элементы заданного списка в обратном порядке.

Односвязный список - C++
Где можно прочитать про это? Чтобы было просто написано: как создать список, как добавить туда элементы, как удалить список. 4 учебника...

Односвязный список - C++
Всем привет. Помогите разобраться с односвязным списком. Вот собственно и вопросы: 1) Если я правильно понял то список это чтото вроде...

Односвязный список - C++
Смотрю уроки по односвязному списку. У автора в 37 строке кода происходит инициализация структуры. Но как программа определит, что значения...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
_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
3 / 3 / 1
Регистрация: 09.10.2013
Сообщений: 52
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2016, 22:16
Привет! Вот еще темы с ответами:

Односвязный список C++ - C++
помогите решить проблему с выводом суммы, буду благодарен #include &lt;iostream&gt; #include &lt;cctype&gt; using namespace std; struct...

Односвязный список - C++
Во общем, программа создает список и заносит туда элементы с помощью массива. Но при выводе, программа выводит лишний элемент первым. Где...

Односвязный список - C++
Люди помогите пожалуйста с лабораторной сделал прогу по заданию а преподаватель говорит что не правильно сделана функция поиска и вообще...

Односвязный Список - C++
Как реализовать список в этом коде, необязательно писать код буду благодарен за совет или подсказку! #include &quot;stdafx.h&quot; #include...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru