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

Связанный список (Linked list). - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ненужные символы в строке http://www.cyberforum.ru/cpp-beginners/thread115819.html
мне в новую строку temp надо кинуть строку, перевёрнутую строке str: for (i=strlen(str)-1; i!=-1; i--) temp=str; при первом разе прохождении цикла оно в конец строки temp добавляет дохрена левых символов, даже если перед циклом написать strcpy(temp,"");
C++ C++ borland Помогите пожалуйста решить, сам не имею возможности т. к. мозг не шарит =\ 1. Дана сторона равностороннего треугольника. Найти площадь этого треугольника, его высоты, радиусы вписанной и описанной окружностей. 2. данная тройка натуральных чисел а, b, с является тройкой Пифагора, т.е. с*2 = а*2 + b*2 3. Дано двузначное число. Определить: одинаковы ли его цифры. 4. Дан массив целых... http://www.cyberforum.ru/cpp-beginners/thread115810.html
Считывание данных из бинарного файла C++
Доброго времени суток. Моя проблема уже была озвучена в теме. Вот листинг функции которая должна считывать данные из бинарного файла. DLL_import int LoadList(const char *name) { FILE *f = fopen(name, "rb"); if(!f){ puts("Can't open file!"); return 0;
Строки C++
Дана строка, заканчивающаяся точкой. Подсчитать, сколько слов в строке.
C++ <string.h> http://www.cyberforum.ru/cpp-beginners/thread115776.html
Из строки нужно удалить все слова в которых есть арабские цыфры.
C++ string И getline string name; cout <<"Name -> "; getline(cin,name); cout <<"OK, "<<name; 2 раза требует ввод почему? подробнее

Показать сообщение отдельно
Alex5
883 / 618 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
14.04.2010, 23:02     Связанный список (Linked list).
Рассмотрим список *odd
Вы создали один элемент этого списка. А где создаются 2-й 3-й ...
C++
1
2
3
4
void smash(elem*&first)
{
  elem *odd = new elem;
  elem *nodd = new elem;
Например, first указывает на список, состоящий из 12, 14, 16, 18
В процедуре smash будут выполнены присваивания одному и тому же элементу
C++
1
2
3
4
odd->num = 12;
odd->num = 14;
odd->num = 16;
odd->num = 18;
и мы получим один элемент, значение поля "num" у которого 18

Допустим, мы имеем список 12, 14, 16, 18
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
    while (p!=NULL)               p-> (12, ...)   odd->(..., ...)   fir == NULL
    {
        if (p->num%2 == 0) 
        {
            odd->num = p->num;             p-> (12, ...)   odd->(12, ...)      fir == NULL
            odd->next = NULL;                p-> (12, ...)   odd->(12, NULL)   fir == NULL
            if (fir == NULL) fir = odd;        p-> (12, ...)     fir == odd -> (12, NULL)
            else las->next = odd;
            las = odd;                            p-> (12, ...)   odd == fir == las  -> (12, NULL) 
            //cout << "odd: " << odd->num << endl;  
            p=p->next;  
        } 
Следующая итерация цикла
        if (p->num%2 == 0)                  p->num  == 14
        {
            odd->num = p->num;            p-> (14, ...)   odd == fir == las  -> (14, NULL) 
            odd->next = NULL;               p-> (14, ...)   odd == fir == las  -> (14, NULL) 
            if (fir == NULL) fir = odd; 
            else las->next = odd;           p-> (14, ...)   odd == fir == las  -> (14, odd) 
            las = odd;                          p-> (14, ...)   odd == fir == las  -> (14, odd) 
// Мы получили  : все указатели odd, fir, las  равны и указывают на объект, 
// у которого num == 14 next == odd Т.е. он указывает на самого себя
            //cout << "odd: " << odd->num << endl;  
            p=p->next;  
        }
Добавлено через 14 минут
C++
1
void add_element (elem*&first, elem*&last, int i)
Почему Вы не используете add_element() в smash() ?
 
Текущее время: 14:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru