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

Удаление четных и отрицательных элементов (списки) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Процедуры и функции http://www.cyberforum.ru/cpp-beginners/thread581745.html
Два простых числа называются ,,близнецами,, если они отличаются друг от друга на 2 (например 41 и 43). Напечатать все пары ,,близнецов,, из отрезка , где n-заданное натуральное число больше 2....
C++ Двунаправленный линейный список удалить 2е вхождение элемента вот кусок кода char s;int i; cin>>s; p=list->right; if (seeklist (list,s,p,i)) { int k=1; p=p->right; do ... http://www.cyberforum.ru/cpp-beginners/thread581742.html
C++ Ввод исходной информации и вывод результатов организовать в функции main()
Ввести строку символов. Закодировать ее (изменить код символа на 3). Шифрование оформить в виде функции пользователя, передав введенный массив символов как аргумент. Ввод исходной информации и вывод...
Найти элемент массива с максимальной суммой делителей C++
Помогите пожалуйста Дан целочисленный массив A.Найти элемент массива с максимальной суммой делителей. Вывести на экран значение найденного элемента и его порядковый номер в массиве
C++ Сборка загрузочного модуля http://www.cyberforum.ru/cpp-beginners/thread581727.html
задание звучит так: "Сборка загрузочного модуля из двух с помощью интерфейса командной строки". Не могу понять что от меня требуется... не прошу писать программы, просто если не сложно объясните что...
C++ Как компилировать программу C++ или код в бинарник (что бы запускался без участия ОС) Помогите пожалуйста как компилировать прогу написанную на с++ или код в бинарник (что бы запускался без участия ОС) И сразу второй вопрос что лучще делать сервер на апаче или по средствам виндовс. подробнее

Показать сообщение отдельно
crewww
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
26.05.2012, 05:01  [ТС]
спасибо с этой задачей я разобрался, а не могли бы вы помочь с такой задачей
нужно отсортировать односвязный список перестановкой элементов (то есть перенаправляя указатели)
моя попытка решения
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
#include <iostream>
#include <fstream>
using namespace std;
struct tElem
{
 int val;
 tElem *r;
 
};
 
void print (tElem *t)
{   tElem *z=t;
   while (z!=NULL)
    {
        cout<<z->val<<" ";
 
        z=z->r;
 
    }
}
 
void create_list(tElem* &h1,ifstream &f)
{
tElem* temp;
 
h1=new tElem;
 
temp=h1;
 
f>>temp->val;
 
while(f.peek()!=EOF)
    {
        temp->r=new tElem;
 
        temp=temp->r;
 
        temp->r=NULL;
 
        f>>temp->val;
    }
 
}
int main()
{
    ifstream file("bubble.txt");
    tElem *z;
    create_list(z,file);
 
tElem *p,*k=z; bool run=true;
while (run)
 
    {   run=false;
            while (k)
            {   if (k->r)
 
                    if(k->val>k->r->val&&k->r->r)
                    {
 
                        p=k->r;
 
                        k=k->r->r;
 
                        k->r=z;
 
                        k=p;
 
                        z=k;
 
                        run=true;
 
 
                    }
            }
 
    }
 
 
    print(z);
    getchar();
return 0;
file.close();
}
но код нерабочий к сожалению в чем моя ошибка?

Добавлено через 5 часов 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
86
87
88
#include <fstream>
#include <conio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
    struct sp
    {
        int data;
        sp *next;
    };
    
void create(sp* &h1,ifstream &f)
{
sp* temp;
 
h1=new sp;
 
temp=h1;
 
f>>temp->data;
 
while(f.peek()!=EOF)
    {
        temp->next=new sp;
 
        temp=temp->next;
 
        temp->next=NULL;
 
        f>>temp->data;
    }
 
}
    
    void sort(sp *nach)
    {
        sp *list_ptr;
sp *pre_ptr=NULL;
bool run=true;
while (run){
   run=false;
   list_ptr=nach;
   while (list_ptr->next)
    {
        if (list_ptr->data > list_ptr->next->data){
               
                if (list_ptr==nach)
                {
                    nach=list_ptr->next;
                    list_ptr->next=nach->next;
                    nach->next=list_ptr;
                }
                else
                {
                    pre_ptr->next=list_ptr->next;
                    list_ptr->next=list_ptr->next->next;
                    pre_ptr->next->next=list_ptr;
                }
                run=true;
               }
        pre_ptr=list_ptr;
        list_ptr=list_ptr->next;
         
    }
}
    }
    
    void pokaz(sp *nach)
    {
        sp *p = nach;
        while (p)
        {
            cout << p -> data <<" ";
            p = p -> next;
        }
        cout << endl;
    }
    
    void main()
    {   ifstream f("bubble.txt");
        sp *nach;
        create(nach, f);
        pokaz(nach);
        sort(nach);
        pokaz(nach);
        f.close();
        system("pause");
    }
Добавлено через 33 минуты
элементы последний с предпоследним не меняются

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
90
91
92
#include <fstream>
#include <conio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
    struct sp
    {
        int data;
        sp *next;
    };
    
void create(sp* &h1,ifstream &f)
{
sp* temp;
 
h1=new sp;
 
temp=h1;
 
f>>temp->data;
 
while(f.peek()!=EOF)
    {
        temp->next=new sp;
 
        temp=temp->next;
 
        temp->next=NULL;
 
        f>>temp->data;
    }
 
}
    
    void sort(sp *&nach)
{
        sp *list_ptr;
sp *pre_ptr=NULL;
bool run=true;
while (run)
    {
 
   run=false;
   list_ptr=nach;
   while (list_ptr->next && list_ptr->next->next)
      {
        if (list_ptr->data > list_ptr->next->data)
          {
               
                if (list_ptr==nach)
                {
                    nach=list_ptr->next;
                    list_ptr->next=nach->next;
                    nach->next=list_ptr;
                }
                else
                { 
                    pre_ptr->next=list_ptr->next;
                    list_ptr->next=list_ptr->next->next;
                    pre_ptr->next->next=list_ptr;
                }
                run=true;
          }
        pre_ptr=list_ptr;
        list_ptr=list_ptr->next;
        
      }
 
    }
}
    
    void pokaz(sp *nach)
    {
        sp *p = nach;
        while (p)
        {
            cout << p -> data <<" ";
            p = p -> next;
        }
        cout << endl;
    }
    
    void main()
    {   ifstream f("bubble.txt");
        sp *nach;
        create(nach, f);
        pokaz(nach);
        sort(nach);
        pokaz(nach);
        f.close();
        system("pause");
    }
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru