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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2012, 00:57   #1
Npwas
Форумчанин
 
Аватар для Npwas
 
Регистрация: 26.09.2011
Сообщений: 158
Вопрос Спсики с указателями, список в списке?!(Delphi)

Спасите кто мой мозг от тресканья, до этого я все осознавал, но Списки с указателями рушат мой мозг!!!
Я тут еле настряпал простой варриант работы со списками, трудно мне как то они представляются!!! Можете показать как сделать вложенные списки, типо термин:подтермины, следующий термин: его подтермины и т.д.!!! Можете привести пример как данное осуществить!!! Вот это пока то что я настряпал, но дальше никак продвинуться не могу!!!
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

Type
  Ukazatel = ^LIST;
  LIST = record
    name:string;
    next:Ukazatel;
  end;
Var
  u,Head:Ukazatel;
  g:Integer;
 Digit :string ;
Procedure Input(dig:string);
Var
  tmp:Ukazatel;
BEGIN
 if u = nil then
   Begin
      new(u);
      tmp:=u ;
       Head:=u;

   End
 Else
  Begin
    tmp:=u;
    Head:=u;
   while tmp^.next <> nil do
     tmp:=tmp^.next;
     new(tmp^.next);
     tmp:=tmp^.next;
     Head:=u;
  End;
  tmp^.next:=nil;
  tmp^.name:=dig;
END;

Procedure Vivod;
 BEGIN
  u:=Head;
  while u <> nil do
             Begin
                Writeln(u^.name);
                u:=u^.next;
             End;
  u:=Head;
  writeln;
 END;

Procedure Found(dig:string);
Var
 figoro:boolean;
 BEGIN
 figoro:=true;
 u:=Head;
  while u <> nil do
   Begin
    If (u^.name=dig) and (figoro) then
     begin
      Writeln('Vi eto slovo iskali:  ',u^.name);
      figoro:=false
     end
    else
     u:=u^.next;
   End;
   u:=Head;
  writeln;
 END;
{ПРОЦЕДУРА УДАЛЕНИЯ УКАЗАННОГО ЭЛ-ТА}
Procedure Del(dig : string);
Var
  x, dx : UKAZATEL ;
Begin
  x := u;
  while x<>Nil do
    if x^.name=dig
      then
        Begin
          if x=u
            then
              Begin
                u := u^.Next;
                Dispose(x);
                x := u;
              End
            else
              Begin
                dx^.Next := x^.Next;
                Dispose(x);
                x := dx^.Next;
              End;
        End
      else
        Begin
          dx := x;
          x := x^.Next;
        End;
End;


BEGIN
 g:=1;
  While g<>0 do
   begin
     Writeln('1.Vvod');
     Writeln('2.Vivod');
     Writeln('3.Poisk');
     Writeln('4.Udalenije');
     Writeln('0.Vihod');
     Readln(g);
     Writeln;
     case g of
        1: Begin
               Write('Vvedite slovo:  ');
               Readln(Digit); //заполняем список до нулевого элемента
                Input(Digit)
           End;
        2: Vivod;
        3: Begin
               Write('Vvedite iskomoe slovo:  ');
               writeln;
                Readln(Digit); //заполняем список до нулевого элемента
                Found(Digit);
           End;
       4: Begin
            Write('Kakoj element vi hotite udalitj:  ');
            Readln(Digit);
            Del(Digit);

          End;
     end
   end;
End.
<----Весы Там.

Последний раз редактировалось Npwas; 28.03.2012 в 01:30. Причина: I'm be stupid in the lists whith pointers!!!
Npwas вне форума Ответить с цитированием
Старый 28.03.2012, 01:56   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Данная задача
Цитата:
вложенные списки, типо термин:подтермины, следующий термин: его подтермины и т.д.
можно реализовать с помощью деревьев
Вот тут можно почитать!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 28.03.2012, 02:00   #3
Npwas
Форумчанин
 
Аватар для Npwas
 
Регистрация: 26.09.2011
Сообщений: 158
По умолчанию

Спасиб(навесы уже нажал)!!! А так это получается такой типаж создания списков как бы деревьями называют или при поиске данной информации я могу на че-нибудь другое наткнуться?!
<----Весы Там.
Npwas вне форума Ответить с цитированием
Старый 28.03.2012, 02:09   #4
Npwas
Форумчанин
 
Аватар для Npwas
 
Регистрация: 26.09.2011
Сообщений: 158
По умолчанию

Вот всетаки наши преподы гады!!! "Через списки делайте"!!! Нет,чтоб сказать про то что и деревья нужны, мы их даже и не проходили, вообще через 2-ва месяца должны пройти!!! Странно, материал про это в конце методы, а учиться еще до июня, интересно че дальше делать будем!!!
<----Весы Там.
Npwas вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Списки с указателями!(Delphi) Npwas Помощь студентам 2 27.03.2012 13:32
Списки с указателями, как пользоватьс?(Delphi) Npwas Помощь студентам 0 26.03.2012 13:27
Delphi, список topside Помощь студентам 0 12.02.2012 18:21
спсики состоящие из нескольких столбцов HeopZ Microsoft Office Excel 1 30.11.2010 20:25
Delphi.Как организовывать чтение из файла и отображение его в списке-ListBoxе. FireflyJuillet Помощь студентам 0 20.05.2010 00:54