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

Сортировка односвязного(линейного) списка(код внутри) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ссылка на функцию http://www.cyberforum.ru/cpp-beginners/thread1099722.html
Здравствуйте. Разбираюсь с библиотекой lwip. Нашел пример реализации tcp и udp echo-сервера. Но в этих примерах столкнулся со следующей проблемой. #include "lwip/mem.h" #include "lwip/memp.h" #include "lwip/dhcp.h" #include "lwip/tcp.h" #include "lwip/udp.h" #include "netif/etharp.h" #include "ethernetif.h" #include "tcpip.h" #include "ipconfig.h"
C++ Вывести: сведения об абонентах, время внутригородских разговоров которых превышает заданное Phone: Фамилия, Имя, Отчество, Адрес, Номер, Время внутри- городских разговоров, Время междугородних разговоров. Создать массив объектов. Вывести: а) сведения об абонентах, время внутригородских разговоров кото- рых превышает заданное; б) сведения об абонентах, воспользовавшихся междугородней свя- зью; в) сведения об абонентах, выведенные в алфавитном порядке http://www.cyberforum.ru/cpp-beginners/thread1099719.html
C++ Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1
В одномерном массиве, состоящей из n вещественных элементов, вычислить: 1) номер минимального элемента массива; 2) сумму элементов массива, расположенных между первым и вторым отрицательными элементами. 3) Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1, а потом - все остальные. #include <iostream> #include <cstdlib> #include...
Инвертирование односвязного списка в с++ C++
Помогите решить проблему: нужно инвертировать односвязный список в с++ (задом на перед). Вот написал функцию. По логике вроде все правильно, а на практике выводит мусор... void obr(TStud *&Start){ TStud *End, *wp; End = new TStud; End=Start; Start=Start->next; End->next= NULL; for(;Start->next!=NULL;){
C++ Описать структуру с именем TRAIN http://www.cyberforum.ru/cpp-beginners/thread1099714.html
1. Определить класс с именем TRAIN, содержащий следующие поля: О название пункта назначения; О номер поезда; О время отправления. Определить методы доступа к этим полям и перегруженные операции извлечения и вставки для объектов типа TRAIN. 2. Написать программу, выполняющую следующие действия: О ввод с клавиатуры данных в массив, состоящий из шести объектов типа TRAIN; записи должны быть...
C++ The variable is "da" being used without being defined #include <iostream> #include <iomanip> using std::cout; using std::cin; using std::endl; int main() { setlocale( LC_ALL,"Russian"); int r,v; подробнее

Показать сообщение отдельно
Sivilan
6 / 6 / 0
Регистрация: 17.03.2013
Сообщений: 66
18.02.2014, 17:33     Сортировка односвязного(линейного) списка(код внутри)
Здравствуйте.Нужна помощь,у меня самого не получается,уже не знаю как организовать сортировку перестановкой указателей,то есть ссылок элементов друг на друга.В коде ниже организована с помощью массива,а мне нужно с помощью перестановки только ссылок(указателей)элементов списка.Спасибо
C++ (Qt)
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#include <iostream>
using namespace std;
 
struct foot
{
    int mesto;
    foot *next;
};
foor *last=NULL;
 
void menu ()
{
    cout<<endl<<"\nViberite nomer deistviya";
    cout<<endl<<"1.Zapolnit' tyrnirnuy tablicy";
    cout<<endl<<"2.Sortirovat' elementi tyrnirnuy tablici ";
    cout<<endl<<"3.Pokazat' tyrnirnuy tablicy";
    cout<<endl<<"4.Ydalit' elementi tyrnirnuy tablici";
    cout<<endl<<"5.Vihod\n";
 
}
 
void add(foot ** first, int m )
{
    if ((*first)==NULL)
    {
        *first = new foot();
        (*first)->mesto = m;
        (*first)->next=NULL;
    }
    else
 {
       foot *adr = *first;
       while (adr->next)
       {
           adr=adr->next;
       }
       adr->next=new foot();
       adr=adr->next;
       adr->mesto=m;
    }
}
 
void show(foot *first)
{
 while (first!=NULL)
 {
  cout << endl << first->mesto;
  first = first->next;
 }
}
 
 void del(foot** first, int m)
{
    foot *ptmp = *first;
    int cntr = 0;
    while(ptmp!=NULL)
    {
        if(ptmp->mesto == m)
        {
            if(cntr==0)
            {
                *first = (*first)->next;
                delete ptmp;
                ptmp = 0;
            }
            else
            {
                ptmp = *first;
                while(--cntr!=0)
                    ptmp = ptmp->next;
                foot* pdel = ptmp->next;
                ptmp->next = pdel->next;
                delete pdel;
                pdel = 0;
            }
            break;
        }
        ptmp = ptmp->next;
        ++cntr;
    }
}
 
void sor(foot* first)
{
    if(first && first->next)
    {
        foot* const pf = first;
        int cntr = 0;
        while(first)
        {
            ++cntr;
            first = first->next;
        }
        foot* *arr = new foot*[cntr];
        first = pf;
        for(int i = 0; first; ++i)
        {
            arr[i] = first;
            first = first->next;
 
        }
        int i, j, tmp;
        for(i = 0; i < cntr; ++i)
        {
            tmp = arr[i]->mesto;
            for(j = i - 1; j >= 0 && arr[j]->mesto > tmp; --j)
                arr[j+1]->mesto = arr[j]->mesto;
            arr[j+1]->mesto = tmp;
        }
    }
}
 
 
 int main ()
 {
    int val, opt;
    foot *first = NULL;
    while(true)
    {
 
        menu();
        cin>> opt;
        switch (opt)
        {
        case 1:
         cout<<"Element dlya dobavleniya: ";
         cin>> val;
         add(&first, val);
         break;
        case 2:
            sor(first);
            break;
        case 3:
         show(first);
         break;
        case 4:
         cout<<"Element dlya udaleniya: ";
         cin>> val;
         del (&first, val);
         break;
        case 5:
            return 0;
        }
    }
 }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru