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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ предлоги http://www.cyberforum.ru/cpp-beginners/thread1140349.html
помогите пожалуйста! Есть предложение в нем надо подсчитать кол-во предлогов! Как это сделать, и что для этого надо почитать
C++ Запуск подпрограмм Только начал изучать, сильно не пинайте. Запускаю много разных исходников, приходиться каждый раз создавать новый проект, либо все стирать в старом и писать/вставлять новый. Причем IDE не позволяют... http://www.cyberforum.ru/cpp-beginners/thread1140310.html
C++ Найти все числа в массиве которые заканчиваются на число 47
Помогите пожалуйста решить задачу: Неоходимо найти все числа в массиве (диапазон случайных чисел от 200 до -200) которые заканчиваются на 47 (как я понял вариантов будет не много. -47 47 -147 147) и...
C++ Метод перебора
Пожалуйста помогите решить задачу за оптимальное время МИНИМАЛЬНОЕ ПОКРЫТИЕ УСЛОВИЕ. Заданы набор С подмножеств конечного множества S, положительное целое число K<=C. ВОПРОС. Верно ли, что С...
C++ Некорректный вывод из структуры в файл http://www.cyberforum.ru/cpp-beginners/thread1140279.html
Здравствуйте! Нужно вывести в файл фамилию, имя и отчество студента, которые я ранее ввожу русскими буквами. В консоль вывод нормальный, а вот при выводе в файл русских букв выводятся "левые"...
C++ Нарушение прав доступа при записи по адресу Как исправить ошибку?? Первый этап обработки исключения по адресу 0x0F484AF5 (msvcr110d.dll) в ConsoleApplication16.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0xCDCDCDCD.... подробнее

Показать сообщение отдельно
haseki
3 / 3 / 1
Регистрация: 02.11.2013
Сообщений: 164

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

06.04.2014, 14:52. Просмотров 771. Ответов 2
Метки (Все метки)

Компилируется, но не работает. Что и как исправить?

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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.