Естественное двухпутевое слияние дека

 
0
 
C++
ava
novigalex | 17.02.2013, 23:57
Реализация связи элементов линейного списка - указатели. Способ организации линейного связанного списка - дек.
Алгоритм сортировки - Естественное двухпутевое слияние. Не могу написать код сортировки, сам алгоритм понял, а с кодом разобраться не могу. Помогите заочнику закрыть задолжность

#include "stdafx.h"
#include "iostream"

using namespace std;
  
struct Value
{
        public:int val;
        Value* Next;
        Value* Prev;
        Value(int n):Next(0),Prev(0),val(n){};
};
class deq
{
        Value* Head;
        Value* Tail;
        public:void Add_First(int n);
        public:void Add_Last(int n);
        public:void Delete_First();
        public:void Delete_Last();
        public:void Print();
        public:void Sort();
        public:deq(){Head=NULL;Tail=NULL;}
};
void deq::Add_First(int n)
{
        Value* Elem=new Value(n);    
        Elem->Prev=NULL;
        if (Head!=NULL)
        {
             Elem->Next=Head;
            Head->Prev=Elem;
            Head=Elem;
        }
        else
        {
            Elem->Next=NULL;
            Head=Tail=Elem;
        }
}
void deq::Add_Last(int n)
{
        Value* Elem=new Value(n);    
        Elem->Next=NULL;
        if (Tail!=NULL)
        {
            Elem->Prev=Tail;
            Tail->Next=Elem;
            Tail=Elem;
        }
        else
        {
            Elem->Next=NULL;
            Tail=Head=Elem;
        }
}
void deq::Delete_First()
{
        Value *p;
        p=Head->Next;
        delete Head;
        Head=p;
        p->Prev=NULL;
}
void deq::Delete_Last()
{
        Value *p;
        p=Tail->Prev;
        delete Tail;
        Tail=p;
        p->Next=NULL;
}
void deq::Print()
{
        Value *p=Head;
        while(p!=NULL)
        {
                cout<<p->val<<"  ";
                p=p->Next;
        }
        cout<<"\n";
        }
void deq::Sort()
{}
int main()
{     deq elements;

        elements.Add_First(15);
        elements.Add_First(1);
        elements.Add_First(3);
        elements.Add_First(7);
        elements.Add_First(9);
        elements.Add_Last(4);
        elements.Add_Last(6);
        elements.Print();
        elements.Sort();
        cout << "\n";
        elements.Print();

        system("pause");
        return 0;
}


Модератор: не забываем пользоваться кнопочкой "Код"
Ответы (4)
ava
baldina | 18.02.2013, 09:29 #
и где код?
ava
novigalex | 18.02.2013, 14:24 #
добавил
ava
novigalex | 03.03.2013, 15:12 #
всё, разобрался smile
ava
NoviceF | 03.03.2013, 15:27 #
Цитата (novigalex @  3.3.2013,  16:12 findReferencedText)
всё, разобрался

ну так порадуй своих собратьев студентов - запости решение, может потом кто поисковиком найдёт )
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить