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

Цикл по односвязному списку - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти ошибку в цикле http://www.cyberforum.ru/cpp-beginners/thread1252249.html
Помогите найти ошибку в цикле.Не циклирует. #include <iostream> using namespace std; int main() { setlocale (LC_ALL,"Russian"); char quit;
C++ Реализовать программу, которая содержит объявления собственного пространства имен и его использования Реализовать программу, которая содержит объявления собственного пространства имен и его использования. Потом добавить не менее 5 директив препроцессора и объясните их использования. Добавить объявление хотя бы одного макроса и код, в котором эти макросы будут использованы. Может кто помочь, как єто реализовать, буду очень благодарен. http://www.cyberforum.ru/cpp-beginners/thread1252241.html
C++ Вычислить площадь выпуклого четырёхугольника ABCD
Задача на С++ (Не могу разобраться) Нужно вычислить площадь выпуклого четырёхугольника ABCD, заданного длинами своих сторон a, b, c, d и одной из диагоналей e. Нужно составить блок схему и саму программу,помогите с программой,и желательно бы объяснить,очень надеюсь на помощь
Как можно получить список твитов по хештегу с использованием api твиттера? C++
подскажите пожалуйста, как можно получить список твитов по хештегу с использованием api твиттера?
C++ Задача "Метки колдунов" http://www.cyberforum.ru/cpp-beginners/thread1252208.html
Всем доброго времени суток! Не приходят идеи по решению задачи: Задача 3. Метки колдунов В банке гоблинов есть сеть тоннелей, ведущих на поверхность из их подземных хранилищ. Схематичное изображение одной из таких сетей приведено на рисунке справа. Внизу рисунка отмечен подвал, обозначенный буквой A, поверхность отмечена буквой F. Другие буквы обозначают площадки, на которых...
C++ Изменения размерности динамического массива недавно задался вопросом, а можно как-то изменить размерность динамического массива ну например есть такой массив int n; n=5; int *mas; mas=new int; потом я где-то в программе решил его увеличить и сделать например 6 или 7 ну или еще что, можно как-то это сделать? ну или например уменьшить подробнее

Показать сообщение отдельно
итернал
4 / 4 / 0
Регистрация: 17.09.2012
Сообщений: 324
Завершенные тесты: 1

Цикл по односвязному списку - C++

07.09.2014, 13:29. Просмотров 360. Ответов 3
Метки (Все метки)

добрый день, можете подсказать как можно сделать прохождение до конца списка, вообщем задача у меня такая, есть односвязный список с хранящимися в днем масивами, там только 1 или 0 и мне нужно удалить один из элемент и другие изменить так если они были связаны, вообще по идее там получается как бы матрица перехода для отрезков с активными связями
для треугольника будет вот так например
Название: для форума.png
Просмотров: 51

Размер: 2.7 Кб
ну я в элементах храню масивы
1-ый 0 1 1
2-ой 1 0 1
3-ий 1 1 0
и вот если удалить второй
то должно остатся
1-ый 0 1
2-ой 1 0
а у меня получается остается
0 1 1
1 1 0
то что нужно не коректируется
вот мой код, оно вроде коректирует, но по новой в список не заносит, и почему-то до последнего элемента в списке не доходит, я пытался крутил вертел что бы исправить не получается, подскажите пожалуйста как можно, ну для начала что бы доходило до конца списка
код
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
void CStack::DelVal(int k,int &n)
{   
    int e;
    int *vremMas;
    vremMas=new int [n];
    Elem *pCur=pFirst;
    for(Elem**next=&pFirst;*next;next=&(*next)->pNext)
    {       
        if((*next)->id==k)//найден элемент который надо удалить
        {               
            for(int i=0;i<n;i++)
            {
                vremMas[i]=pCur->mas[i];//времено сохраняем массив который мы удалим
                cout<<vremMas[i];
            }
            cout<<endl;
            int h;
            Elem*to_delete=*next;
            h=(*next)->id;  //запоминаем айди которое потом удалим и сместим текущий список
            cout<<h<<endl;
            for(int g=0;g<n;g++)
            {
                if(vremMas[g]==1)//если в массиве 1
                {
                    cout<<"vxod"<<g+1<<endl;
                    Elem *pVrem=pFirst; 
                    for(Elem *pVrem=pFirst;pVrem->pNext!=NULL;pVrem=pVrem->pNext)
                    {
                        int j=0;
                        if(pVrem->id==g+1)//найдет элемент списка в котором нужно изменить массив
                        {
                            cout<<pVrem->id<<endl;
                            for(int y=0;y<n;y++)
                            {                               
                                if(y+1!=h)
                                {
                                    pVrem->mas[j]=pVrem->mas[y];//тут по идее должні вносится новые данные в список
                                    cout<<pVrem->mas[j];
                                    j++;
                                }
                            }
                            cout<<endl;
                        }                       
                        cout<<"id: "<<pVrem->id<<endl;
                    }
                }
            }           
            *next=to_delete->pNext;//элемент который будетсмещен
            (*next)->id=h;
            delete to_delete;   //удаление нужного элемента списка              
            return;
        }
        pCur=pCur->pNext;
    }   
}
я так понимаю проблема в массиве
C++
1
for(Elem *pVrem=pFirst;pVrem->pNext!=NULL;pVrem=pVrem->pNext)
но почему-то в голову не приходит как исправить, в разных местах cout вставлял что бы понять где и сколько раз заходит в цикл и тд, и заметил что до посленего не доходит
ну всмысле тут
C++
1
2
3
pVrem->mas[j]=pVrem->mas[y];//тут по идее должні вносится новые данные в список
                                    cout<<pVrem->mas[j];
                                    j++;
выводит только 0 1 первый массив в списке, а второй не выводит, да и потом когда уже в основной программе вывожу весь список пишет
0 1 1
1 1 0
как буд-то изменения не были применены
а как я понимаю должно хотя бы
0 1
1 1 0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru