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

Двусвязные списки, не могу добавить узел с конца - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Быстрая сортировка Хоара http://www.cyberforum.ru/cpp-beginners/thread261701.html
Быстрая сортировка Хоара (QSort) разбивает массив в ходе сортировки до тех пор, пока размер частичного подмассива не станет равен 1 элементу. Есть подозрение, что лучше бы она не доводила разбиение до 1, а передала частичный подмассив какой-нибудь медленной сортировке при достижении размера подмассива M элементов (M<=N). Модифицируйте алгоритм QSort и напишите...
C++ как выглядит в си++ Program kursak; Const Nmax = 5; {Максимальный размер массива} Type Matrix = array of integer;; m:=m; m:=s; end; end http://www.cyberforum.ru/cpp-beginners/thread261679.html
После каждого вхождения символа C в строку S вставить строку S0 C++
Дан символ C и строки S, S0. После каждого вхождения символа C в строку S вставить строку S0. #include <iostream> #include <string.h> using namespace std; const int N=30;
C++ Моделирование алгоритмических вычислений на машинах произвольного доступа
Построить программу для машины произвольного доступа, реализующая вычисления следующих функций, и найти их значения для заданных неотрицательных аргументов. Входные данные заносятся в регистры МДД R1, R2, результат сохраняется в регистре R1. • f(x) = 0; • f(x) = x + 1; • f(x) = x - 1; • f(x, y) = x + y; • f(x, y) = x - y; • f(x, y) = x * y; • f(x, y) = x div y; • f(x, y) = x mod y.
C++ Вычисление значений функции http://www.cyberforum.ru/cpp-beginners/thread261632.html
Доброго времени суток! Помогите с одной задачей.Надо построить таблицу значений(функция y=ln(x/(x-2))). Если в некоторой точке x функция не определена, то вывести на экран сообщение об этом.Я написал кой-что,но она зачения выводит но ошибку нет,помогите с этой напастью)Спасибо заранее)))) #include<math.h> #include<stdio.h> float f( float x ){ return(log(x/(x-2))); } void...
C++ Определить истинные следующие утверждения: Определить истинные следующие утверждения: a) «любое выражение в Си может быть преобразован в оператор добавлением к нему точки с запятой (;)» b) «пустой оператор в Си - это отсутствие каких-либо символов в том месте конструкции, где по синтаксису может находиться оператор» c) «составной оператор (блок) в Си - это совокупность операторов, помещенных в фигурные скобки» d) «оператор... подробнее

Показать сообщение отдельно
Dexter
 Аватар для Dexter
284 / 144 / 16
Регистрация: 13.10.2009
Сообщений: 164
22.03.2011, 13:40     Двусвязные списки, не могу добавить узел с конца
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
list *insert(int val, int poz, list *head){
    list *pointer = new list;
    pointer->data = val;
    pointer->next = NULL;
    pointer->prev = NULL;
    list *node=head;
    // Если список пуст
    if(head == NULL){
        return pointer;
    }
    int i=0;
    while(i<poz&&node->next!=NULL)//идем до нужной позиции
    {
        i++;
        node=node->next;
    }
        if(node->next == NULL&&i!=poz){//если позиция больше чем количество элементов
            node->next=pointer;
            pointer->prev=node;
            return head;
        }
        else//если нужно вставить перед этим элементом
        {
            pointer->next=node;
            pointer->prev=node->prev;
            if(node->prev)node->prev->next=pointer;
            node->prev=pointer;
            if(pointer->prev)return head;//если были предыдущие, то возвращаем начало списка
            else return pointer;//если нету, то это стало головой
        }
}
А шаги такие:
1)смотрим пустой список или нет, если пустой то делаем наш элемент головой
2)Пытаемся дойти до нужной позиции,
a)если позиция оказывается больше чем наше количество элементов, то добавляем его в конец
б)если позиция внутри, то вставляем узел в нужное место, для этого определяем prev и next элементы нашего узла, prev следующего и next предыдущего

Выше показано как можно такое сделать. (первый элемент, естественно 0-ой)
 
Текущее время: 06:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru