C
Charley2
Код:
#pragma hdrstop
#include <tchar.h>
#include <iostream.h>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
//---------------------------------------------------------------------------
#pragma argsused
class Element {
public:
int data;
Element *next;
Element *prev;
};
class list {
Element *top;
int MaxCount;
public:
int count;
list()
{
MaxCount=0;
count=0;
top=NULL;
}
int IsEmpty ()
{
if (top==NULL)
{
return true;
}
else
return false;
}
int pop()
{
if(!IsEmpty())
{
int element;
element=top->data;
MaxCount--;
top=top->next;
return element;
} else
return NULL;
}
void push(int i)
{
Element *link = new Element;
link->data=i;
link->next=top;
top=link;
MaxCount++;
}
void show()
{
Element *tmp = top;
while (tmp)
{
cout << tmp->data << " ";
tmp=tmp->next;
}
}
void mergeSort(list part)
{
list right_mas;
list left_mas;
int max=MaxCount;
int element;
if (max>=2)
{
for (int i=max; i>0; i--)
{
if (i>max/2)
{
element=pop();
right_mas.push(element);
} else
{
element=pop();
left_mas.push(element);
}
}
mergeSort(right_mas);
mergeSort(left_mas);
//merge(top, stakan.top);
}
show();
cout << "\n";
}
};
int main()
{ for (int i=0; i<10; i++)
{
a=rand()%100;
t2.push(a);
}
t2.mergeSort(t2);
getch();
return 0;
}
Метод mergeSort делит связный список на списки до тех пор пока в списках останется только один элемент. Вызов t2.mergeSort(t2) должен показать по идее содержимое всех списков, состоящих из одного элемента, но он ничего не показывает. Почему?