![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
InFuz |
![]()
Сообщение
#1
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 116 Регистрация: 13.10.2009 Город: Ульяновск Учебное заведение: УлГУ Вы: студент ![]() |
Задание: Создать объект - однонаправленный список L1 без головного элемента.
Добавить в стандартный набор объекта ваш метод согласно варианту. Задание варианта: Если среди первых трех элементов есть два равных, то удалить первый из них, иначе вставить в начало списка сумму трех элементов. Напечатать эти элементы. Не разобрался как работают указатели. Стандартные методы нам дали на лекциях осталось только свой метод сделать. Код program Spisok; uses Crt; type Inf=integer; const Zero:Inf=0; type ptr=^EL; EL=record Dn:Inf; Nx:ptr; end; List = Object private p:ptr; public constructor Init; function Empty:boolean; procedure MyMethod; procedure AddHead(D:Inf); procedure AddEnd(D:inf); destructor Done; procedure Print; end; {--------------------------------------------------------------} constructor List.Init; begin p:=nil end; function List.Empty:boolean; begin Empty:=p=nil end; procedure List.MyMethod; var q:prt; begin end; procedure List.AddHead(D:Inf); var q:ptr; begin new(q); q^.Dn:=D; q^.Nx:=p; p:=q; end; procedure List.AddEnd(D:inf); var q,t:ptr; begin new(q); q^.Dn:=D; q^.Nx:=nil; if p=nil then p:=q else begin t:=p; while t^.Nx<>nil do t:=t^.Nx; t^.Nx:=q; end; end; destructor List.Done; var q:ptr; begin while not Empty do begin q:=p; p:=q^.Nx; dispose(q) end; end; procedure List.Print; var q:Ptr; begin if p=nil then write('->|') else begin q:=p; while q<>nil do begin write(q^.Dn:3,' ');q:=q^.Nx end; end; writeln; end; {--------------------------------------------------------} var L1:List; n,i,k:longint; BEGIN ClrScr; TextColor(10); writeln; writeln('Mem Before = ',MemAvail); TextColor(15); write('Vvedite dliny spiska: n = '); readln(n); L1.Init; {randomize;} for i:=1 to n do L1.AddEnd (100 - random(100)); L1.Print; {if n<3 then begin writeln('Malo elementov') else begin L1.MyMethod; L1.Print; end;} L1.Done; TextColor(10); writeln('Mem After = ',MemAvail); readln; END. Помогите хотя бы, как правильно записать сравнение первых 3 элементов с помощью указателей, а дальше может сам тогда разберусь. |
![]() ![]() |
InFuz |
![]()
Сообщение
#2
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 116 Регистрация: 13.10.2009 Город: Ульяновск Учебное заведение: УлГУ Вы: студент ![]() |
Все убейте тему, сам разобрался.
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 25.5.2025, 23:31 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru