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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2009, 12:23   #1
arm777
Новичок
Джуниор
 
Регистрация: 09.06.2009
Сообщений: 2
По умолчанию Помогите со списками в Delphi

Код:
Type
    TSubList = ^SubList;
    SubList = record
    Next : TSubList;
    Data : string[10];
   end;

    TMainList = ^MainList;
    MainList = record
    Next : TMainList;
    Data : TSubList;
   end;

 var
  Form1: TForm1;
  head : TMainList;
  curr : TMainList;

  head_sub : TSubList;
  curr_sub : TSubList;
  n, k, i : integer;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  ListBox.Clear;
end;

procedure TForm1.ListBoxClick(Sender: TObject);
begin
 k := strtoint(ListBox.Items[ListBox.ItemIndex]);
end;

 Procedure ShowSubLists ();
    var
     curr : TMainList;
     st : string;
  begin
    Form1.ListBox.Clear;
    n := 0;
    i := 0;
    st := '';
    curr := head;
      while curr <> NIL do
       begin
         n := n + 1;
         Form1.ListBox.Items.Add(inttostr(n));
         curr := curr^.Next;
       end;
    end;

 Procedure AddSubList();
  var
    curr : TMainList;
    curr_sub : TSubList;
   begin
       Form1.ListBox.Clear;
       new(curr);
       new(curr_sub);
       curr^.Data := curr_sub;
       if (head = nil)
        then
         begin
           curr^.Next := nil
         end
        else
         begin
         curr^.Next := head;
         end;
         head := curr;
       ShowSubLists ();
   end;

 procedure TForm1.Button1Click(Sender: TObject);
 begin
   AddSubList();
 end;

 Procedure DeleteSubList();
var
 flag : boolean;
 curr, prev : TMainList;
 n : integer;
begin
  new(curr);
  if (head = nil)
   then
    begin
     MessageDlg('Ñïèñîê ïóñòîé', mtError,[mbok],0);
     Exit;
    end;
   curr := head;
   prev := nil;
   flag := false;
   n := 0;
    while (curr <> nil) and (not flag) do
     begin
      n := n + 1;
       if (n = k)
        then flag := true
        else
         begin
          prev := curr;
          curr := curr^.Next;
         end;
       end;
   if flag then
     begin
       if prev = nil
       then
       head := curr^.Next
       else
       prev^.Next := curr^.Next;
       Dispose(curr);
     end;
   ShowSubLists ();
 end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  DeleteSubList();
end;

Добавляю в основной список TMainList подсписки TSubList, и вывожу в ListBox, также могу удалять подсписки, но никак не могу добавлять и удалить элементы в Подсписок TSubList. Помогите!!!! Кто сможет!!!

Последний раз редактировалось Stilet; 09.06.2009 в 13:12.
arm777 вне форума Ответить с цитированием
Старый 09.06.2009, 13:17   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
new(curr);
new(curr_sub);
Чет я смысла в этом не пойму... Зачем еще один элемент создавать?
Я так понял тебе нужно создать Главный элемент и наполнить его второстепенными, но зачем постоянно его создавать, когда второстепенные создаешь?

P.S. А не проще, раз уж ты на Делфи пишеш взять для этого спецклассы?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.06.2009, 13:54   #3
arm777
Новичок
Джуниор
 
Регистрация: 09.06.2009
Сообщений: 2
По умолчанию

согласен что new(curr_sub); здесь лишнее

Просто хочу в главный список впихнуть подсписки, а в подсписки уже элементы, строки, инты, ну не важно!!!
arm777 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите с работой с односвязными списками Паскаль neon0858 Помощь студентам 2 18.05.2009 22:00
Помогите пожалуйста со списками... Horknee Паскаль, Turbo Pascal, PascalABC.NET 10 22.12.2008 16:21
Работа со списками Dimo444ka Помощь студентам 2 01.06.2008 16:34
Работа со списками. radist Паскаль, Turbo Pascal, PascalABC.NET 4 07.05.2007 00:05