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

быстрая сортировка в двусвязных списках. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ сортировка чисел в "алфавитном" порядке http://www.cyberforum.ru/cpp-beginners/thread76036.html
Здравствуйте, хотелось бы узнать от вас, как будет выглядеть программа с таким условием: Дано множество чисел (массив).. Нужно вывести на экран числа в "алфавитном" порядке, т.е. число 2 будет стоять раньше 154, 5 раньше 47 и т.д... Надеюсь на вашу помощь. Заранее спасибо.
C++ указатели Имеется группа белых и серых мышей количеством N, расположенных хаотически. Между ними имеются M свободных мест. Составить программу, моделирующую процесс разделения мышей на серых и белых (например, серые выше, белые – ниже) по правилу: каждая мышь может занимать только свободную рядом с ней позицию; за один такт программы мышь может переместиться не более чем в одну позицию. #pragma hdrstop... http://www.cyberforum.ru/cpp-beginners/thread76027.html
Одномерный и двумерный массив. C++
Помогите пожалуйста!! То что подчеркнуто я никак не могу понять!!! Ввести построчно элементы двумерного массива чисел заданного размера. Вывести исходный массив. Из строк исходного массива, элементы которых принадлежат другому введенному одномерному массиву чисел, сформировать столбцы результирующего массива. Вывести сформированный массив. Вывод строки массива оформить в виде функции.
C++ где здесь ошибка по циклу
//------------------------------------------------------------------------- #include <iostream.h> #include <conio.h> #include <math.h> #include <stdio.h> //---------------------------------------------------------------------------
C++ последовательности и массивы http://www.cyberforum.ru/cpp-beginners/thread75998.html
помогите с прогами пожалуйста) 1.Дана последовательность из N целых чисел, среди которых нет двух одинаковых. Требуется вычеркнуть минимально возможное количество чисел, так чтобы оставшиеся числа шли в порядке возрастания. 2. Создать файл, содержащий сведения об участниках конкурса. Структура Ф.И.О; год рождения; название страны; класс музыкального инструмента (гитара, фортепиано,...
C++ одномерный массив!!! дан одномерный массив целых чисел произвольной размерности. Разработать программу, которая выводит сначала все отрицательные числа этой последовательности, а затем все положительные, причем обе последовательности должны быть отсортированы по возрастанию. значения эл-ам массива задавать случайным образом. Пожалуйста. желательно с комментами c++ builder подробнее

Показать сообщение отдельно
groozzz
0 / 0 / 0
Регистрация: 12.05.2009
Сообщений: 26
17.12.2009, 22:48     быстрая сортировка в двусвязных списках.
Есть необходимость реализовать быструю сортировку с использованием двухсвязных списков.
В принципе большая часть реализована, однако никак не могу подобрать условие в указанном ниже месте. В результате сортировка зацикливается. Подбирал условие для частного случая, пробовал задать новое - нет ни одного универсального...

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
void Admin::QSort(Node *First,Node *Last, int SortSize)
{
    BASE L, R, C, TEMP;
    Node *Left=NULL;
    Node *Right=NULL;
    int SSize=NULL;
    int x=1;
    if(First==0&&Last==0&&SortSize==0)
    {
        First=FirstPtr;
        Last=LastPtr;
        SortSize=Size;
    }
    Left=First;
    Right=Last;
    SSize=SortSize;
    L=Left->GetData();
    R=Right->GetData();
    Node *Center=Left;
    for(int i=SSize/2;i>0;i--)
        Center=Center->GetNext();
    C=Center->GetData();
    while()//интересует вот енто.
    {
        while(L.Number<C.Number)
        {
                Left=Left->GetNext();
            L=Left->GetData();
        }
        while(R.Number>C.Number)
        {
            Right=Right->GetPrev();
            R=Right->GetData();
        }
        if(L.Number>R.Number)
        {
            TEMP=L;
            L=R;
            R=TEMP;
            Right->SetData(R.Number,R.Name,R.Value,R.Amount);
            Left->SetData(L.Number,L.Name,L.Value,L.Amount);
        }
    }
 
    if(Left!=First)
        QSort(First,Left,SSize/2);
    if(Right!=Last)
        QSort(Right,Last,SSize/2);
}
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
Node::Node(void)
{
    PrevPtr=NULL;
    NextPtr=NULL;
    Base.Number=NULL;
    Base.Name=NULL;
    Base.Value=NULL;
    Base.Amount=NULL;
}
 
Node::~Node(void)
{
}
void Node::SetNext(Node *Ptr)
{
    NextPtr=Ptr;
}
void Node::SetPrev(Node *Ptr)
{
    PrevPtr=Ptr;
}
 
BASE Node::GetData()
{
    return Base;
}
void Node::SetData(int Number, char *Name, char *Value, int Amount)
{
    Base.Number=Number;
    Base.Name=Name;
    Base.Value=Value;
    Base.Amount=Amount;
}
Node* Node::GetNext()
{
    return NextPtr;
}
Node* Node::GetPrev()
{
    return PrevPtr;
}
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
#pragma once
#include "iostream"
using namespace std;
struct BASE
{
    int Number;
    char *Name;
    char *Value;
    int Amount;
};
 
class Node
{
public:
    Node(void);
    ~Node(void);
    void SetNext(Node *);//уст. указ на следующую яч
    void SetPrev(Node *);//установка указателя на пред.яч.
    Node* GetNext();//получение следующей ячейки
    Node* GetPrev();//получение предыдущей
    BASE GetData(void);//получение стр-ры
    void SetData(int, char*, char*, int);//запись структуры
private:
    BASE Base;//экземпляр структуры
    Node *NextPtr;//указатель на следующую ячейкуна следующую
    Node *PrevPtr;//указатель на предыдущую ячейку
};
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru