Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Yark0s
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 37
#1

Удалить конкретный элемент из списка - C++

15.02.2014, 17:36. Просмотров 515. Ответов 1
Метки нет (Все метки)

Как удалить конкретный элемент со списка , к примеру удалить "6" со списка "12469"!
Код:
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
//---------------------------------------------------------------------------
#include <clx.h>
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
using namespace std;
struct Element
{
   char data;
   Element * Next;
};
// Односвязный список
class List
{
   Element * Head;
   Element * Tail;
   int Count;
 
public:
   List();
   ~List();
   // Добавление элемента в список
   // (Новый элемент становится последним)
   void Add(char data);
   // Удаление элемента списка
   // (Удаляется головной элемент)
   void bound(char data);
   void Del();
   // Удаление всего списка
   void DelAll();
   // Распечатка содержимого списка
   // (Распечатка начинается с головного элемента)
   void Print();
   // Получение количества элементов, находящихся в списке
   int GetCount();
};
 
List::List()
{
   // Изначально список пуст
   Head = Tail = NULL;
   Count = 0;
}
 
List::~List()
{
   DelAll();
}
 
int List::GetCount()
{
   return Count;
}
void List::bound(char data)
{
    Element *temp = new Element;
    temp->data = data;
    Tail = Head;
    if (Head != NULL)
    {
        while (Tail != NULL)
        {
            if (Tail->data == temp->data)
                break;
            else if (Tail->data < temp->data && Tail->Next == NULL)
            {
                Tail->Next = temp;
                break;
            }
            else if (Tail->data < temp->data && Tail->Next->data > temp->data)
            {
                temp->Next = Tail->Next;
                Tail->Next = temp;
                break;
            }
            Tail = Tail->Next;
        }
    }
    else
        Head = Tail = temp;
}
 
void List::Add(char data)
{   // создание нового элемента
   Element * temp = new Element;
   // заполнение данными
   temp->data = data;
   // следующий элемент отсутствует
   temp->Next = NULL;
   // новый элемент становится последним элементом списка
   // если он не первый добавленный
   if(Head!=NULL){
 Tail->Next=temp;
 Tail = temp;
   }
   else{
   Head=Tail=temp;
   }
}
 
void List::Del()
{
   Element * temp = Head;
   Head = Head->Next;
   delete temp;
}
 
void List::DelAll()
{
   while(Head != 0)
      Del();
}
 
void List::Print()
{
   Element * temp = Head;
   while(temp != 0)
   {
      cout << temp->data << " ";
      temp = temp->Next;
   }
   cout << "\n\n";
}
void main()
{  char q;
   // Создаем объект класса List
   List lst;
   char s[] = "12469\n";
   cout << s << "\n\n";
   int len = strlen(s);
   for(int i = 0; i < len; i++)
     lst.Add(s[i]);
   lst.Print();
   scanf("%c",&q); printf("\n");
   lst.bound(q);
    lst.Print();
//   lst.Del();
//    lst.Print();
   getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2014, 17:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить конкретный элемент из списка (C++):

Iterator в списке - как вывести на экран конкретный элемент списка? - C++
Доброго времени суток! Недавно начал работу со списком в c++ и у меня возник вопрос: Предположим, есть список, состоящий из 5...

Как удалить нужный элемент из списка или заменить этот элемент на другой? - C++
Доброго времени суток, господа! Есть список: list&lt;double&gt; list1; Есть возможность добавить в начало или в конец списка елементы:...

Задача Иосифа Флавия. Удалить каждый второй элемент из списка и в конце вывести на экран последний оставшийся элемент - C++
Создать циклический список, в котором находятся элементы от 1 до N. Нужно написать программу, которая удаляет каждый второй элемент из...

Удалить элемент из списка - C++
Нужно удалить елемент из списка. Вот написал такую ф-ю. Но она почему то вылетает. Буду очень благодарен если поможете)) void...

Удалить элемент из списка - C++
Есть список. Надо удалить тот елемент который размещен за заданым. Я пробовал чтото написать(55 строка) но оно не удаляет.#include...

Удалить из списка последний элемент - C++
Задание: Удалить из списка последний элемент. #include&lt;iostream.h&gt; #include&lt;conio.h&gt; struct elem { int Data; elem *Next; ...

1
vovacreme
-16 / 61 / 13
Регистрация: 14.01.2014
Сообщений: 145
15.02.2014, 17:58 #2
Попробуй так, сам не компилировал, могу ошибаться:
C++
1
2
3
4
5
6
7
8
9
10
void List::Del_item(char item)
{
   Element * temp = Head;
   while (temp->next->data != item)
       temp = temp->Next;
   Element * temp1 = temp->Next;
   temp->Next = temp1->Next;
   delete temp1;
   delete temp;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2014, 17:58
Привет! Вот еще темы с ответами:

Как удалить элемент из списка - C++
for(auto&amp;i:M) { getline(i.GetF(),str); if(i.GetF().eof()) M.remove(i); cout&lt;&lt;str&lt;&lt;&quot;\n&quot;; ...

Удалить элемент из односвязного списка - C++
Есть односвязный список struct student { char last_name; char name; char date; int exams; double rate; };

Удалить первый элемент списка - C++
Подскажите пожалуйста!!! Как сделать так чтобы в этой программе происходило удаление элемента первого в списке??? В этой программе...

Удалить элемент из односвязного списка - C++
У нас есть односвязный список и указатель на один из его элементов, как удалить этот элемент из списка, оставив список целостным ?(сделать...


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

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

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