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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Статическе константы http://www.cyberforum.ru/cpp-beginners/thread1074484.html
Для чего используют статические константы?
C++ Вычислите произведение P= 1*3*5*7*…*(2n+1) для заданного n Помогите пожалуйста. Вычислите произведение P= 1*3*5*7*…*(2n+1) для заданного n. Все это при помощи класса (с конструктором и деструктором). знаю как решить задачу, но не знаю как сделать ее в классе. #include <iostream> using namespace std; int main() {setlocale(LC_ALL, "Russian" ); int n,p,i,s=1; cin»n; for(i=0; i<n; i++) {p=(2*i+1); s=(s*p);} http://www.cyberforum.ru/cpp-beginners/thread1074470.html
Вычислить значение суммы конечного ряда. Записать выражение для вычисления очередного слагаемого C++
Вычислить значение суммы конечного ряда. Записать выражение для вычисления очередного слагаемого. p=5/3+ln2*6/6-ln4*7/9+ln6*...*14/30-ln20
C++ Вывести строку, расположенную между первым и последним пробелом исходной строки
Дана строка, содержащая по крайней мере один символ пробела. Вывести строку, расположенную между первым и последним пробелом исходной строки. Если строка содержит только один пробел, то вывести пустую строку. Помогите пожалуйста, буду очень благодарен.
C++ Различия srand() и rand() http://www.cyberforum.ru/cpp-beginners/thread1074445.html
Привет, форумчане! Изучаю с++шник, внезапно появился нездоровый интерес. Чем srand() отличается от rand()? Знаю, что srand() генерирует числа на основе базы, которую задаю я сам. В следующем примере, как я понял, показано, что базой является текущее время. Функция rand() генерирует числа на основе стандартной базы. Поэтому, последовательность одна и та же. //пример использования функции srand...
C++ Транспонирование матриц Здравствуйте, проблема с транспонированием матриц... Сами матрицы это vector<vector<int>> _matrix; С создание матриц проблем нет, с заполнением значений и выводом на экран тоже, но тут не пойму.... CMatrix tmp(_matrix.size(), _matrix.size()); for(int i = 0; i < _matrix.size(); i++) { for(int j = 0; j < _matrix.size(); j++) { tmp = _matrix; //Ошибка тут } } подробнее

Показать сообщение отдельно
klik07
3 / 3 / 0
Регистрация: 17.11.2013
Сообщений: 33
18.01.2014, 00:35     Удалить первый элемент односвязного списка
Нужно написать собственный контейнер в виде односвязного списка. Удаление элементов из середины и конца я сделал, но не могу придумать как удалить первый элемент. вот часть кода
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
...
...
...
struct List { // элемент списка
    IBase *info;
    List* next;
};
  
 
class storage  {   // сам контейнер
private:
    List *p;
    List *first; // указатель на начало списка
    int n; // количество непустых ячеек
    List *obj; //текущий элемент
public:
    storage() { // конструктор по умолчанию
        first = NULL;
        n = 0;
        obj = NULL;
        p = NULL;
    }
    ~storage() {
        cout << "Деструктор";
    }
    void add_1_obj(IBase *A) {
        // Создать новый элемент списка
        p = new List;
        p->info = A;
 
        // Присоединить новый элемент 
        //к началу списка
        p->next = first ;
        first = p;
        n++; // считаем кол-во элементов
    }
        void delete_all_storage() {     // удаление всего контейнера
        while (first) {
            p = first;
            first = first->next;
            delete p;
        }
        n = 0;
        cout << "Udalenie" << endl << endl;
    }
    List *first1(){ // первый элемент
        obj = first;
        return obj;
     }
    List *next(){ // следующий элемент
        List *tmp = obj;
        obj = tmp->next;
        return obj;
    }
    bool eol() {   // проверка на "пустоту" 
        if (obj != NULL)
            return true;
        else
            return false;
    }
        void delete() {
        if (obj->next == NULL) {        // удаляем последний элемент
            List *tmp = obj;
            first1();
            while (obj->next != tmp)
                this->next();
            obj->next = NULL;
            delete tmp;
            n--;
            return;
        }
        if (obj==first) {
            
                        // вот здесь как быть
 
            n--;
            return;
        }
        List *tmp = obj;   // удаляем элемент из середины
        first1();
        while (obj->next != tmp)
            this->next();
        obj->next=tmp->next;
        delete tmp;
        n--;
    }
        ...
        ...
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru