Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 24.09.2015
Сообщений: 16
1

Реализовать функции поиска элементов двухсвязного списка с заданным значением и с заданным адресом

04.03.2016, 19:17. Показов 558. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написать функции
-Создать список
-Создать упорядоченный по возрастанию список;
-Распечатать список в прямом порядке;
-Распечатать список в обратном порядке;
-Найти элементы с заданным значением;
-Удалить элемент с заданным адресом;

Сделал почти все задания,кроме последних двух,никак не могу разобраться как вписать их в свой код,помогите пожалуйста,очень признателен.

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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
#include <iostream>
#include <fstream>
#include <clocale>
#include <stdio.h>
#include <windows.h>
 
using namespace std;
struct Node
{
    int num;
    Node* prev;
    Node* next;
};
 
typedef Node* Pnode;
 
Pnode creatnode(int x)
{
    Pnode p = new Node;
    p->num = x;
    p->next = p->prev = NULL;
    return p;
}
 
void printpr(Pnode Head)
{
    while (Head)
    {
        cout << Head->num << " ";
        Head = Head->next;
    }
    cout << endl;
}
 
void printob(Pnode Tail)
{
    while (Tail)
    {
        cout << Tail->num << " ";
        Tail = Tail->prev;
    }
    cout << endl;
}
 
Pnode find(Pnode Head, int x, bool &p)
{
    p = false;
    while (Head)
    {
        if (Head->num == x)
        {
            p = true;
            return Head;
        }
        else
            Head = Head->next;
    }
}
 
void deletenode(Pnode &Head, Pnode &Tail, Pnode x)
{
    if (x==Head)
    if (x == Tail) Head = Tail = NULL;
    else
    {
        Head = Head->next;
        Head->prev = NULL;
    }
    else
    {
        if (x == Tail)
        {
            Tail = Tail->prev;
            Tail->next = NULL;
        }
        else
        {
            x->prev->next = x->next;
            x->next->prev = x->prev;
        }
    }
 
}
 
void insert_end(Pnode &Head, Pnode &Tail, Pnode p)
{
    if (!Head)
        Head = Tail = p;
    else
    {
        Tail->next = p;
        p->prev = Tail;
        Tail = p;
    }   
}
 
void Create1(Pnode &Head, Pnode &Tail)
{
    ifstream f;
    f.open("input.txt", ios::in);
    int x;
    while (!f.eof())
    {
        f >> x;
        insert_end(Head, Tail, creatnode(x));
    }
    f.close();
}
 
void insertb(Pnode q, Pnode p, Pnode &Head, Pnode &Tail)
{
    if (q == Head)
    {
        p->next = Head;
        Head->prev = p;
        Head = p;
        if (q == Tail) Tail = Head->next;
    }
    else
    {
        q->prev->next = p;
        p->next = q;
        p->prev = q->prev;
        q->prev = p;
    }
}
 
void inserta(Pnode q, Pnode p, Pnode &Head, Pnode &Tail)
{
    if (q == Tail)
    {
        p->prev = Tail;
        Tail->next = p;
        Tail = p;
        if (q == Head) Head = Tail->prev;
    }
    else
    {
        q->next->prev = p;
        p->prev = q;
        p->next = q->next;
        q->next = p;
    }
}
 
void add(Pnode &Head, Pnode &Tail, int x)
{
    Pnode p, q;
    p = creatnode(x);
    if (!Head) Head = Tail = p;
    else
    {
        q = Head;
        while (q->next != NULL && q->num <= x)
            q = q->next;
        if (q->next == NULL)
        if (q == Head)
        if (q->num > x)
            insertb(q, p, Head, Tail);
        else
            inserta(q, p, Head, Tail);
        else
        if (q->num > x)
            insertb(q, p, Head, Tail);
        else
            inserta(q, p, Head, Tail);
        else
            insertb(q, p, Head, Tail);
    }
}
 
void Create2(Pnode &Head, Pnode &Tail)
{
    ifstream f;
    f.open("input.txt", ios::in);
    int x;
    while (!f.eof())
    {
        f >> x;
        add(Head, Tail, x);
    }
    f.close();
}
 
void main()
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    setlocale(LC_ALL, "rus");
 
    Pnode Head1 = NULL, Tail1 = NULL, Head2 = NULL, Tail2 = NULL, rezfind= NULL;
 
    Create1(Head1, Tail1);
    printpr(Head1);
    printob(Tail1);
 
    Create2(Head2, Tail2);
    printpr(Head2);
    printob(Tail2);
 
    int x;
    bool p = false;
    cout << "Введите число для поиска: ";
    cin >> x;
    cout << endl;
    rezfind=find(Head2, x, p);
    if (p)
        cout << "Элемент с заданным значением найден"<< endl;
    else
        cout << "Такого значения нет!"<< endl;
 
 
    cout << "Введите число которое вы хотите удалить: ";
    cin >> x;
    cout << endl;
    rezfind = find(Head2, x, p);
    if (p)
    {
        deletenode(Head2, Tail2, rezfind);
        cout << "Результирующий список: ";
        printpr(Head2);
    }
    else
        cout << "Такого числа нет!" << endl;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.03.2016, 19:17
Ответы с готовыми решениями:

Двунаправленный список (добавление/удаление элементов в голову, просмотр списка, реализовать дублирование элементов с заданным значением)
Здравствуйте! Помогите написать программу, обеспечивающую работу с двунаправленным нециклическим...

Реализовать операцию поиска узла с заданным значением в дереве, не являющемся деревом поиска
На основе процедуры обхода дерева снизу вверх реализовать операцию поиска узла с заданным значением...

Написать функции поиска структуры с заданным значением выбранного элемента
Есть массив структур. Нужно написать функции поиска структуры с заданным значением выбранного...

Удаление элементов из однонаправленного списка с заданным значением
Дан однонаправленный список, нужно удалить элементы с заданным значением. Попытался написать...

0
04.03.2016, 19:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.03.2016, 19:17
Помогаю со студенческими работами здесь

Методом бинарного поиска найти индексы элементов с заданным значением
В упорядоченном по убыванию массиве из n целых чисел, есть элементы равные значениям d, f и c....

Вычислить число элементов списка после элемента с заданным значением
Помогите с задачкой пожалуйста, ее описание в заголовке. Насколько я понимаю, нужно создать список...

Реализовать метод, вычисляющий значение функции с заданным диапазоном (интервалом для вычислений) и заданным шагом
Реализовать метод, вычисляющий значение функции с заданным диапазоном (интервалом для вычислений) и...

Написать функцию, которая вставляет в массив элемент с заданным индексом и заданным значением
Мне нужно написать функцию, которая вставляет в массив элемент с заданным индексом и заданным...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru