Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Списки! 
:(
    Опции темы
Uragan
Дата 26.12.2006, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 29.10.2005

Репутация: нет
Всего: 0



Мне дали задание, найти и сложить максимальные элементы списка.
С массивами это очень просто, но как в Паскале задать список и как можно обратиться к 
элементам списка?
Заранее благодарен!
PM MAIL WWW   Вверх
skyboy
Дата 26.12.2006, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



использовать записи: одно поле содержит значение(лучше - указатель на значение), второе хранит указатель на следующую ячейку.
Код

type
 TListEl = record
   value: pointer;
   Next: pointer;
end;
TList: ^TListEl;


Добавлено @ 09:02 
Цитата(Uragan @  26.12.2006,  07:46 Найти цитируемый пост)
но как в Паскале задать список и как можно обратиться к 
элементам списка?

в общем, встроенных средств, как в случае с массивами, нет.
PM MAIL   Вверх
Zero
Дата 26.12.2006, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(Uragan @  26.12.2006,  08:46 Найти цитируемый пост)
и как можно обратиться к 
элементам списка?

сохраняешь адрес певрвого элемента в переменной, а дальше отталкиваясь от него, проверяешь каждый элемента которые есть в списке, и дальше обрабатываешь как тебе надо.
PM MAIL ICQ   Вверх
Rodman
Дата 26.12.2006, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: нет
Всего: 122



очередь
Код

Uses crt;
type PSTRC=^STRC;
 STRC=record
  inf:integer;
  ptr:PSTRC;
 end;
var S1:PSTRC;
 i,k:integer;
 err:boolean;
procedure DOP (var Q:PSTRC; Dat:integer);
Var Nov, cur, pr:pstrc;
begin
 cur:=q;
 pr:=Nil;
 New(Nov);
 Nov^.inf:=Dat;
 Nov^.ptr:=Nil;
 while(cur <> Nil) do
  begin
   pr:=cur;
   cur:=cur^.ptr;
  end;
 if (pr <> Nil) then
  pr^.ptr:= Nov
 else Q:=Nov;
end;

function Cht(Q:pstrc; VAR ERR:BOOLEAN):integer;
begin
 if(Q<>Nil) then
  begin
   err:=false;
   cht:=Q^.inf;
  end
  else
 begin
 Write('pusto');
 err:=true;
 cht:=0;
 end;
end;

function UD (var Q:pstrc; var err:boolean):integer;
Var old:pstrc;
 Val:integer;
begin
 old:=Q;
 if(q<>Nil) then
  begin
   Q:=Q^.ptr;
   UD:=old^.inf;
   Dispose (old);
   err:=false;
  end
  else
   begin
    UD:=0;
    err:=true;
   end;
end;

BEGIN
 clrscr;
 for i:=1 to 10 do
  begin
   readln(k);
   dOP(S1,k);
  end;
for i:=1 to 10 do
 begin
  if (cht(s1,err) mod 2)<>0 then ud(s1,err)
 else begin
 writeln(cht(s1,err));
 ud(s1,err);
 end;
end;
readln;
end.


стэк
Код

uses crt;
type PSTRC=^Strc;
     Strc=record
     inf:integer;
     ptr:Pstrc;
end;
var S1,s2:PSTRC;
    i,k,g,p:integer;
    err:boolean;
    a:array [1..20] of integer;
Procedure Dop(var S:Pstrc;dat:integer);
var nov:Pstrc;
begin
New(nov);
nov^.inf:=dat;
nov^.Ptr:=s;
S:=nov;
end;
Function Ud(var S:Pstrc; var err:boolean):integer;
var old:Pstrc;
begin
 if s<>Nil then
  begin
   old:=S;
   S:=S^.ptr;
   Ud:=old^.inf;
   dispose(old);
   err:=false
  end
 else
  begin
   Ud:=0;
   err:=true
  end
end;
Function Cht(s:PSTRC; var err:boolean):integer;
begin
if s<>Nil then
 begin
  write('inf=',s^.inf:3);
  err:=false;
  Cht:=s^.inf;
 end
else begin
      writeln('stack pust');
      err:=True;
      cht:=0;
     end;
end;
BEGIN
 clrscr;
 i:=1;
 k:=1;
 while k<>0 do
  begin
   readln(k);
   Dop(s1,k);
  end;
 while s1<>Nil do
  begin
   a[i]:=Ud(s1,err);
   inc(i);
  end;
 for k:=i downto 1 do
  dop(s2,a[k]);
 for k:=1 to i do
  writeln(ud(s2,err));
readln;
END.

PM MAIL WWW Skype GTalk YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.2099 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.