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

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

06.04.2014, 14:52. Показов 2498. Ответов 2
Метки нет (Все метки)

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
#include <cstdlib>
#include <iostream>
#include <cstring>
#define M 5
using namespace std;
struct A
{
       char key [25];
       
};
 
struct List
{
       A a;
       List *next;
};
 
void Init (List **begin) //функция инициализации списка
{
   *begin = new List;
   A a[M];
   cout << "Введите слова: ";
   for (int i=0; i<M; i++)
     {
   
            cin >> a[i].key;
     }
   
   (*begin)->next = NULL;
   (*begin)->a=a[0]; // добавляем 1 слово
   List *end = *begin;
   for (int i=1; i<M; i++) // цикл со 2-го
   {
      end->next = new List;
      end = end->next;
      end->a = a[i];
      end->next = NULL;    
   }   
   
}
 
void Print (List*b) //функция вывода списка на экран
{
  List *print = b;
  while (print)
  {
     cout << print->a.key << " -> ";
     print = print->next;      
  }    
  cout << "NULL\n";
}
 
void AddBegin (List **begin, A&a) //добавление элемента в начало списка
{
   List *t = new List;
   t->a = a;
   t->next = *begin;
   *begin = t;      
}
 
void AddEnd (List**b, const A&a) //добавление элемента в конец списка
{
    List *p = *b;
    List *t = new List;
    t->a = a;
    t->next = NULL;
    while (1)
    {
       if (!p->next)
       {
          p->next = t;
          break;             
       }  
       p = p->next;    
    }    
}
 
 
int compare(const A &a, const A &b)
{
    return strcmp(a.key, b.key);
}
void Delete(List **begin, const A &a)
{
    List *l, *t;
    l = *begin;
    if (l = NULL)
        return;
    
    if (compare(l->a, a) == 0) {
        *begin = l->next;
        delete l;
        return;
    }
    for (; l->next; l = l->next)
        if (compare(l->next->a, a) == 0) {
            t = l->next->next;
            delete l->next;
            l->next = t;
            return;
        }
}
 
 
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(int argc, char *argv[])
{
    setlocale (LC_ALL, "Russian");
    A add_word, add_end, add_ins, del;
    List *begin = NULL;
    Init (&begin);
    Print (begin);
    cout << "Введите слово, которое хотите добавить в начало списка: ";
    cin >> add_word.key;
    AddBegin (&begin, add_word);
    Print (begin);
    cout << "Введите слово, которое хотите удалить: ";
    cin >> del.key;
    Delete (&begin, del);
    Print (begin);
    cout << "ведите слово, которое хотите вставить в конец списка: ";
    cin >> add_end.key;
    AddEnd (&begin, add_end);
    Print (begin);
    Free (&begin);
    Print (begin);
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2014, 14:52
Ответы с готовыми решениями:

Написать код программы, выполняющей растяжку списка и вставку, удаление из списка и сжатие списка
Люди ПОМОГИТЕ осталось совсем мало , мне нужна помощь!!! написать код программ: 1) Написать код...

Удаление всего списка
Организовать линейный список цветов: хранить название цвета и его числовой код. Упорядочивать по...

Реализация списка.Удаление хвостового элемента.Поиск элемента
Всем привет,мое задание выглядит так : В класс List&lt;T&gt; из классной работы добавить следующие...

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

2
...
1906 / 1326 / 965
Регистрация: 12.02.2013
Сообщений: 2,172
06.04.2014, 15:01 2
haseki, 87 строка, у вас вместо сравнения присвоение стоит.
1
4 / 4 / 1
Регистрация: 02.11.2013
Сообщений: 164
06.04.2014, 15:06  [ТС] 3
anmartex, и правда, спасибо)
0
06.04.2014, 15:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.04.2014, 15:06
Помогаю со студенческими работами здесь

Удаление элемента со списка
Вот у меня есть код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace...

Удаление элемента из списка
Не фуричит функция удаления элемента из списка. Пытался по-разному, последняя ф-ция которая более...

Удаление элемента из списка
Нужно удалить из списка элемент, стоящий после элемента на который указывает Р. Очень срочно надо!...

Удаление элемента из списка
Нужно удалить всех студентов с оценками 2. Entry *begin = new Entry; int mark=2; Entry...


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

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