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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2010, 21:17   #1
Anna T
 
Аватар для Anna T
 
Регистрация: 17.11.2010
Сообщений: 8
По умолчанию Односвязные списки

Не могли бы Вы отправить примеры готовых программ по односвязным спискам, пожалуйста?
Anna T вне форума Ответить с цитированием
Старый 18.12.2010, 21:43   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) на форуме односвязных списков было - завались просто...
Поиском пользовались?

2) а зачем Вам ЧУЖИЕ примеры готовых программ?


3) ну, например, навскидку:
Код:
(*
Даны следующие типы данных:

type AdresaCelula=^Celula;
Celula=record
Info:integer;
Urm:AdresaCelula; end;

Нужно написать программу с использованием подпрограмм, которая создаёт
односвязный список и вычисляет сумму положительных значений из полей Info
ячеек созданного списка.

*)

type AdresaCelula=^Celula;
 Celula = record
 Info:integer;
 Urm:AdresaCelula;
 end;

var haid,tail,p:AdresaCelula;
    c:char;

Procedure InstallSpisok (var golova,hvost:AdresaCelula);
begin
 while true do
  begin
    if golova=nil then
     begin
      new(golova);
      hvost:=golova;
      golova^.Urm:=nil;
     end
    else
     begin
      new(hvost^.Urm);
      hvost:=hvost^.Urm;
      hvost^.Urm:=nil;
     end;
      write('Введите целое число: ');
      readln(hvost^.info);
      write('Продолжить ввод чисел? Y/N');
       readln(c);
        if (c='n') or (c='N') then
          break;
    end; {while}
end;

Procedure Summa (golova,hvost,p:AdresaCelula);
var summa:integer;
begin
summa:=0;
 p:=golova;

 if p=hvost then   {Если в списке один элемент}
  if p^.info>0 then
   begin
    summa:=p^.info;
    writeln('Сумма положительных элементов: ',summa);
   end;

  while p<>hvost do
   begin
     if (p^.info>0) then
      summa:=summa+p^.info;
     p:=p^.Urm;

     if p=hvost then
       begin
        if (p^.info>0) then
         summa:=summa+p^.info;
         write('Сумма положительных элементов = ',summa);
        end;
    end;{while}


end;


begin

InstallSpisok(haid,tail);
Summa(haid,tail,p);
readln;
end.

Последний раз редактировалось Serge_Bliznykov; 19.12.2010 в 20:14. Причина: подправил орфографическую ошибку...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.12.2010, 18:58   #3
Anna T
 
Аватар для Anna T
 
Регистрация: 17.11.2010
Сообщений: 8
По умолчанию

Cпасибо)))
Anna T вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ЯЗЫК СИ.ОДНОСВЯЗНЫЕ СПИСКИ. Даша Киска Общие вопросы C/C++ 2 09.12.2010 22:23
ЯЗЫК СИ.ОДНОСВЯЗНЫЕ СПИСКИ. Даша Киска Помощь студентам 0 09.12.2010 20:18
Односвязные списки art_stalker Общие вопросы C/C++ 5 21.04.2010 22:49
Односвязные списки в моделировании колоды игральных карт. Nelson1992 Помощь студентам 1 06.04.2010 18:24
Односвязные линейные списки !!! salia Помощь студентам 1 12.10.2009 16:01