Нужно написать функцию которая вставляет элементы в конец списка и сортирует по убыванию.
Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
struct LIST
{
double val;
LIST *next;
LIST *pred;
};
LIST *head=NULL;
LIST *p=head;
int num=1;
//---------------------------------------------------------------------------
LIST *CreateNew(double element)
{
LIST *p;
p=new LIST;
if(!p){ ShowMessage("Ïàìÿòü íå âûäåëåíà!");
return NULL; }
p->val=element;
p->next=NULL;
p->pred=NULL;
return p;
}
//---------------------------------------------------------------------------
LIST *InsertToList(LIST *element)
{
LIST *curr1=element->pred;
LIST *curr2=element->pred;
LIST *last=element->pred;
while(curr1)
{
curr2->next=new LIST;
curr2->next->val=curr1->val;
curr2->next->pred=curr2;
curr2->next->next=NULL;
curr2=curr2->next;
curr1=curr1->pred;
if(curr1==last)
{
curr2->next=element;
element->pred=curr2;
break;
}
}
return element;
}
//---------------------------------------------------------------------------
int PrintList(LIST *head)
{
Form1->Memo1->Clear();
AnsiString buf = "";
LIST *p = head;
int i = 0;
if(head == NULL) return 0;
for(;p != NULL; p = p->next)
{
buf = p->val;
Form1->Memo1->Lines->Add(buf);
i++;
}
Form1->Label1->Caption = i;
return i;
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
LIST *list;
list=CreateNew(Edit1->Text.ToDouble());
list=InsertToList(list);
PrintList(list);
}
//---------------------------------------------------------------------------
При добавлении в список записывает только один элемент. В чем может быть проблема?