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

Удаление элемента из списка - C++

Восстановить пароль Регистрация
 
Yakov112
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 69
30.11.2012, 00:02     Удаление элемента из списка #1
необходимо удалить первый элемент из списка, помогите пожалуйста переписать функцию и помогите с вызовом этой функции в main()


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
struct elem
{
    int info;       // Некое значение элемента
    elem *next;     // Указатель на следующий элемент
    elem *prev;     // Указатель на предидущий элемент
};
struct spisok
{
    elem *begin;
    elem *end;
    int count;
};
void delFirst(int info, spisok &sp)          //удаляем первый элемент
{
    cout<<"\ndelFirst";
    elem *temp = new elem;
    temp -> info = info;
    temp -> prev == NULL;       
        if (sp.count == 1)      //если этот элемент единственный
        {
            sp.begin = NULL;
            sp.end = NULL;
        }
        else                //если он первый, но не единственный
        {
            temp -> next -> prev = NULL;
            sp.begin = temp -> next;
        }
        delete temp;
        sp.count--;
        cout << "Элемент " << info << " удален" << endl;
        return;
        
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2012, 00:02     Удаление элемента из списка
Посмотрите здесь:

C++ Удаление элемента из списка и поиск элемента
C++ Удаление элемента со списка
Удаление элемента списка и всего списка C++
C++ Удаление элемента односвязного списка
Удаление элемента из списка C++
C++ Удаление элемента из списка
Удаление элемента из списка C++
C++ Удаление элемента из списка

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
30.11.2012, 00:26     Удаление элемента из списка #2
C++
1
2
3
4
5
6
7
8
9
10
void delFirst(int info, spisok &sp)/удаляем первый элемент
{
 elem *temp =sp.begin;
 if (sp.begin){
   sp.begin=sp.begin->next;
   if (sp.begin) sp.begin->prev=NULL;
   delete temp;
   sp.count--;
 }
}
Yakov112
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 69
30.11.2012, 00:30  [ТС]     Удаление элемента из списка #3
Kuzia domovenok, а не подскажете как реализовать удаление элемента из списка?
вот что у меня получилось, но совсем запутался...а результат когда запускаю прогу, выдает что элемента не существует
вот код
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
void delElem(int numb, spisok &sp)          //функция удаления элемента
{
//  Element *pTemp = pHead;     //создаем временный элемент
    /*int info;
    cout<<"\ndelFirst";
    elem *temp = new elem;
    temp -> info = info;
    temp -> prev == NULL;*/
 elem *temp = sp.begin;
    if ((numb>sp.count) || (numb<1))     //если указанный элемент не существует, то
        cout << "Takogo elementa net" << endl;  //выводим предупреждение на экран
    else
    {
        for(int i=1; i!=numb; i++)  //иначе, переходим до этого элемента
        {
            temp = temp->next;
        }
 
        if (temp -> prev == NULL)       //если удаляем первый элемент
        {
            if (sp.count == 1)      //если этот элемент единственный
            {
                sp.begin = NULL;
                sp.end = NULL;
            }
            else                //если он первый, но не единственный
            {
                temp->next->prev = NULL;
                sp.begin = temp->next;
            }
 
            delete temp;
            sp.count--;
            cout << "Element " << numb << " udalen" << endl;
            return;
        }
 
        if (temp->next == NULL)     //если удаляем последний элемент, то
        {
            temp->prev->next = NULL;    //предыдущий элемент указывает 
//на NULL
            sp.end = temp->prev;        //указатель на последний элемент 
//указывает на предпоследний
 
            delete temp;
            sp.count--;
            cout << "Element " << numb << " udalen" << endl;
            return;
        }       
 
//если элемент находится в центре списка
        if (temp->next != NULL && temp->prev != NULL) 
        {
            temp->prev->next = temp->next; //предыдущий элемент указывает 
  //на следующий
            temp->next->prev = temp->prev; //следующий указывает на 
  //предыдущий
            delete temp;
            sp.count--;
            cout << "Element " << numb << " udalen" << endl;
            return;
        }
    }
};
Yandex
Объявления
30.11.2012, 00:30     Удаление элемента из списка
Ответ Создать тему
Опции темы

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