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

Передача двойного указателя - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Переставляя строки заданной матрицы, расположить их в соответствии с убыванием характеристик http://www.cyberforum.ru/cpp-beginners/thread226092.html
Дана целочисленная прямоугольная матрица. Характеристикой строки матрицы назовем сумму ее отрицательных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с убыванием характеристик. помогите пожайлуйста
C++ FTP клиент нужна помощь, нужно написать програму которая просто заливает файл на фтп сервер, на WinApi. поиск по гуглу расказал что нада юзать wininet, а вот что его и как толком не понять http://www.cyberforum.ru/cpp-beginners/thread226086.html
C++ Функции в С++
Привет всем! Помогите,пожалуйста,решить задание.Очень срочно нужно... Написать функцию с умалчиваемыми параметрами в соответствии с вариантом, продемонстрировать различные способы вызова функции: • с параметрами заданными явно, • с опущенными параметрами • часть параметров задана явно, а часть опущена. 2. Написать функцию с переменным числом параметров в соответствии с вариантом,...
Выкладываю реализацию алгоритма Дейкстры на С++ C++
Дпанная программа выполняет поиск по заданной матрице весов. Далее указываем начальную точку в графе и программа расчитывает все кратчайшие растояния от начальной точки до остальных следующим видом:путь от нач. точки до n-ой: - n-ая промежуточная промежуточная... начальная, вес пути - х. долго искал подобный алгоритм но так и не нашел. вот выкладываю что получилось.Прошу строго не судить(на...
C++ Стрелки совершают N выстрелов из пистолета по мишени. Кучность стрельбы может быть описана суммой квадратов отклонений результатов каждого выстрела от http://www.cyberforum.ru/cpp-beginners/thread226022.html
Спасибо :)) Ещё пару задач. Стрелки совершают N выстрелов из пистолета по мишени. Кучность стрельбы может быть описана суммой квадратов отклонений результатов каждого выстрела от среднего значения. Определить кто из двух стрелков стрелял кучнее, если их баллы {6,9,3,10,10,3,10,9,6,10} и {6,4,7,7,6,8,7,4,6,6}. И вторая. Сотрудник ГАИ замеряет скорость движения автомашин по трассе. Определить...
C++ Можно ли создать процесс(CreateProcessWithLogonW) на удаленном компьютере? Добрый день. Можно ли создать процесс на удаленном компьютере зная ip, пароль и имя пользователя. На подобии функций: CreateProcessWithLogon() CreateProcess() чтобы запустить там cmd.exe и перенаправить его поток вывода в переменную? подробнее

Показать сообщение отдельно
Chainyk
15 / 15 / 1
Регистрация: 24.08.2010
Сообщений: 94

Передача двойного указателя - C++

09.01.2011, 14:06. Просмотров 1081. Ответов 5
Метки (Все метки)

Написал прогу которая работает с односвязным списком.
При передаче в функцию двойного указателя, я его теряю. Смотрел в дебаггером - значение внутри функции совсем другое. Пробовал другой компилятор, тоже самое
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
#include <stdio.h>
#include <stdlib.h>
 
struct List
{
    int data;
    struct List* next;
};
 
List** Init (int data)
{
    List* tmp = (List*)malloc(sizeof(List));
    tmp->data = data;
    tmp->next = NULL;
    return &tmp;
}
 
List* Add (List** tail, int data)
{
    List* tmp = (List*)malloc(sizeof(List));
    tmp->data = data;
    tmp->next = NULL;
    (*tail)->next = tmp;
    *tail = tmp;
    return tmp;
}
 
List* GetPrev (List** head, List* item)
{
    List* tmp = *head;
    if (item == tmp)
        return NULL;
    while (tmp->next!=item)
        tmp = tmp->next;
    return tmp;
}
 
void Delete (List** head, List** tail, List* item)
{
    if (item == *head)
    {
        *head = item->next;
        free (item);
    }
    else if (item->next == NULL)
    {
        List* tmp = GetPrev(head, item);
        tmp->next = NULL;
        *tail = tmp;
        free (item);
    }
    else
    {
        List* tmp = item->next;
        item->data = tmp->data;
        item->next = tmp->next;
        free(tmp);
    }
    return;
}
 
void Print (List** head)
{
    List* count = *head;
    while (count->next != NULL)
    {
        printf ("%d->", count->data);
        count = count->next;
    }
    printf ("%d\n", count->data);
}
 
int main()
{
    List** head, **tail;
    List* ToDel;
    head = tail = Init (4);
    Add (tail, 3);
    ToDel = Add(tail, -1);
    Add(tail, 7);
    Print (head);
    Delete(head, tail, ToDel);
    Print (tail);
    return 0;
}
Добавлено через 11 минут
спасибо, разобрался:
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
#include <stdio.h>
#include <stdlib.h>
 
struct List
{
    int data;
    struct List* next;
};
 
List* Init (int data)
{
    List* tmp = (List*)malloc(sizeof(List));
    tmp->data = data;
    tmp->next = NULL;
    return tmp;
}
 
List* Add (List** tail, int data)
{
    List* tmp = (List*)malloc(sizeof(List));
    tmp->data = data;
    tmp->next = NULL;
    (*tail)->next = tmp;
    *tail = tmp;
    return tmp;
}
 
List* GetPrev (List** head, List* item)
{
    List* tmp = *head;
    if (item == tmp)
        return NULL;
    while (tmp->next!=item)
        tmp = tmp->next;
    return tmp;
}
 
void Delete (List** head, List** tail, List* item)
{
    if (item == *head)
    {
        *head = item->next;
        free (item);
    }
    else if (item->next == NULL)
    {
        List* tmp = GetPrev(head, item);
        tmp->next = NULL;
        *tail = tmp;
        free (item);
    }
    else
    {
        List* tmp = item->next;
        item->data = tmp->data;
        item->next = tmp->next;
        if (tmp->next == NULL)
            *tail = item;
        free(tmp);
    }
    return;
}
 
void Print (List** head)
{
    List* count = *head;
    while (count->next != NULL)
    {
        printf ("%d->", count->data);
        count = count->next;
    }
    printf ("%d\n", count->data);
}
 
int main()
{
    List* head, *tail;
    List* ToDel;
    head = tail = Init (4);
    Add (&tail, 3);
    ToDel = Add(&tail, -1);
    Add(&tail, 7);
    Print (&head);
    Delete(&head, &tail, ToDel);
    Print (&head);
    return 0;
}
но ответ почему не работал первый вариант хочу услышать
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru