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

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

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

Функция удаления элементов (список, стек) - C++

17.05.2014, 18:33. Просмотров 329. Ответов 8
Метки нет (Все метки)

Подскажите, имеется функция добавления элементов (список, стек)

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

Добавление:

C++
1
2
3
4
5
6
7
void linklist::additem(int d) // добавление элемента
{
    link* newlink = new link;      // выделяем память
    newlink->data = d;             // запоминаем данные
    newlink->next = first;         // запоминаем значение first
    first = newlink;               // first теперь указывает на новый элемент
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2014, 18:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция удаления элементов (список, стек) (C++):

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

Двусвязный список - функция удаления - C++
Подскажите,где ошибка. Функция удаляет книгу из списка по названию автора... void DeleteBook(List& theList) // функция удаления...

Функция удаления из стека элементов по условию - C++
Здравствуйте! Написал программу заполнения стека элементами. Не могу написать функцию удаления четных элементов стека. Help. ...

Функция удаления чётных элементов двусвязного списка - C++
bool delete_even(circle_list *&list) {circle_list *curr=list, *first=list; *temp=NULL; if (Empty_list(list)) return false; while...

функция удаления и добавления элементов. что не так с програмой? - C++
#include <iostream> using namespace std; struct node{ double a; double b; node *next;}; node *head= NULL; node *p,...

Функция удаления всех четных элементов AVL-дерева - C++
Помогите допилить функцию удаления всех парных элементов АВЛ дерева. Она сейчас удаляет только элементы, которые находятся в правой...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
AnDrew_LP
160 / 162 / 9
Регистрация: 29.05.2010
Сообщений: 435
17.05.2014, 19:10 #2
C++
1
2
3
4
5
6
7
8
int linklist::pop()
{
    link* remlink = first;
    int data = first->data;
    first = first->next;
    delete remlink;
    return data;
}
1
naa17
0 / 0 / 0
Регистрация: 23.04.2014
Сообщений: 47
17.05.2014, 19:29  [ТС] #3
удаляет, но получается, что удаляет первый элемент. А если надо не первый элемент а конкретный элемент как это сделать? то есть не по индексу элемента, а по самому значению

Добавлено через 1 минуту
получается

C++
1
2
3
4
5
6
void linklist::delitem(int f) // удаление элемента
{
    link* remlink = first;
    first = first->next;
    delete remlink;
}
а дальше

C++
1
2
3
4
5
6
7
8
9
void Graph::deledge(int x, int y)
{
    if (adj[x].e == true && adj[y].e == true && adj[x].exist(y) == true && adj[y].exist(x) == true && (x != y))
    {
        adj[x].delitem(y);
        adj[y].delitem(x);
    }
    else cout << "Ошибка удаления вершины" << endl;
}
0
AnDrew_LP
160 / 162 / 9
Регистрация: 29.05.2010
Сообщений: 435
17.05.2014, 19:35 #4
удаляет, но получается, что удаляет первый элемент. А если надо не первый элемент а конкретный элемент как это сделать? то есть не по индексу элемента, а по самому значению
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void linklist::delitem(int f) // удаление элемента
{
    link* remlink = first;
    while(remlink->next->data != f || remlink != nullptr) remlink = remlink->next;
    if(remlink == nullptr) std::cout << "Елемент не найден";
    else 
    {
         link* newlink = remlink;
         remlink = remlink->next;
         newlink->next = remlink->next;
         delete remlink;
    }
}
0
naa17
0 / 0 / 0
Регистрация: 23.04.2014
Сообщений: 47
17.05.2014, 19:38  [ТС] #5
виснет программа, указывает на четвертую строчку
0
AnDrew_LP
160 / 162 / 9
Регистрация: 29.05.2010
Сообщений: 435
17.05.2014, 19:49 #6
Поле next последнего елемента списка должно быть равно nullptr.
И здесь исправьте
C++
1
while(remlink->next->data != f && remlink != nullptr) remlink = remlink->next;
1
naa17
0 / 0 / 0
Регистрация: 23.04.2014
Сообщений: 47
17.05.2014, 19:51  [ТС] #7
ту же ошибку выдает((
0
AnDrew_LP
160 / 162 / 9
Регистрация: 29.05.2010
Сообщений: 435
17.05.2014, 19:53 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
|| заменили на && ?
1
naa17
0 / 0 / 0
Регистрация: 23.04.2014
Сообщений: 47
17.05.2014, 19:56  [ТС] #9
большое спасибо, теперь отлично работает.

Может быть Вы сможете помочь еще и с этим?

LoadGraph() – загружает граф в память программы из файла;
SaveGraph() – сохраняет созданный в памяти программы граф в файл;

никогда не сталкивался
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2014, 19:56
Привет! Вот еще темы с ответами:

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

Дан односвязный список. Написать функцию удаления из него всех элементов с минимальным значением - C++
Дан односвязный список. Написать функцию удаления из него всех элементов с минимальным значением. #include &lt;iostream&gt; #include &lt;string.h&gt;...

Сформировать динамический список (стек или очередь), считая, что длина списка (количество элементов) задана - C++
Сформировать динамический список (стек или очередь), считая, что длина списка (количество элементов) задана. Описать функцию, которая...

Функция удаления текста в скобках [2], непосредственно функция + 12кб вложений - C++
Доброго времени суток, случилось так, что пришлось работать с с-строками (лаба, угу), в которой нужно удалить весь текст в скобках,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.05.2014, 19:56
Ответ Создать тему
Опции темы

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