Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2011, 13:12   #1
Evacuator
Пользователь
 
Регистрация: 15.10.2010
Сообщений: 10
По умолчанию Двусвязные списки

Нужно написать функцию которая вставляет элементы в конец списка и сортирует по убыванию.
Код:
//---------------------------------------------------------------------------

#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);
}
//---------------------------------------------------------------------------
При добавлении в список записывает только один элемент. В чем может быть проблема?
Evacuator вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двусвязные списки aidar9012 Помощь студентам 6 28.06.2010 02:05
Двусвязные списки vimeo Общие вопросы C/C++ 2 03.05.2010 19:31
двусвязные списки ai\ekcah^p Общие вопросы C/C++ 11 06.06.2009 19:13
Двусвязные списки Serp Помощь студентам 3 14.04.2009 16:13