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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2011, 13:26   #1
Аким Ба
 
Регистрация: 09.08.2011
Сообщений: 7
По умолчанию Разработайте класс, реализующий линейный двусвязный список

Разработайте класс, реализующий линейный двусвязный список. Методы класса: вставка элемента после n-го элемента списка, просмотр списка в прямом и обратном направлении, удаление трех элементов списка, средний из которых имеет номер n. Поля записей: фамилия абитуриента, номер оконченной им школы, наличие медали, средний балл, полученный на вступительных экзаменах.
Аким Ба вне форума Ответить с цитированием
Старый 09.08.2011, 14:46   #2
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

мда... наглость просто прет...
Pein95 вне форума Ответить с цитированием
Старый 09.08.2011, 15:32   #3
Аким Ба
 
Регистрация: 09.08.2011
Сообщений: 7
По умолчанию

А в чем именно моя наглость?

Вроде все указал правильно, в пределах нормы!)

Или в том, что раз я новенький, то мне не следует спрашивать о помощи сразу с таких задач?
Некие знания у меня имеются, но с данной задачей возникли проблемы вот и все..
Аким Ба вне форума Ответить с цитированием
Старый 09.08.2011, 15:52   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
то мне не следует спрашивать о помощи сразу с таких задач?
ткните пальцем в Ваш пост, где Вы просите помощи?...
и вежливости Вас совсем не учили?

это по первому вопросу.

теперь о создании класса...
Помощь предполагает, что Вы что-то делаете и то, что у Вас не получается, Вам подсказывают, как это правильно сделать..
А не означает, что сделают всё за Вас!
ну и последнее.
рекомендую сходит в поиск по форуму, поискать похожие задания, решения, попытаться разобраться и что-то сделать.

Успехов в учёбе.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.08.2011, 21:30   #5
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Аким Ба Посмотреть сообщение
А в чем именно моя наглость?

Вроде все указал правильно, в пределах нормы!)

Или в том, что раз я новенький, то мне не следует спрашивать о помощи сразу с таких задач?
Некие знания у меня имеются, но с данной задачей возникли проблемы вот и все..
Просто так приходите и сразу выкладываете условие вашей задачи. Советую:
1. В начале здороваться.
2. Писать о том, что хотели бы попросить помощи.
3. Заранее поблагодарить за ответ.
Это минимум.
Вадим Мошев вне форума Ответить с цитированием
Старый 09.08.2011, 23:16   #6
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Вообще не плохо было бы до регистрации зайти
Вот сюда.
И вот сюда

Вторая ссылка как-то более говорящая
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 10.08.2011, 00:30   #7
Аким Ба
 
Регистрация: 09.08.2011
Сообщений: 7
По умолчанию

Давайте не будем ругаться))

Просто прочитав как составлять темы, я не стал писать слова "Помогите" и т.д., так как это было бы не правильно!

Если после условия можно писать в чем суть проблемы и что конкретно нужно помочь или уточнить, то этого я не понял.Косяк!

Проблема в том, что мы не изучали списков. Как односвязных так и двусвязных, и я не могу понять с чего начать...
Какая литература есть, она не поясняет сути этой темы..

Подскажите хотя бы как это дерево устроено, и как на словах происходит процесс, или посоветуйте грамотную литературу..
Спасибо!
Аким Ба вне форума Ответить с цитированием
Старый 10.08.2011, 07:43   #8
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

У меня есть готовый код для работы для работы с ОДНОНАПРАВЛЕННЫМ списком, но там нет операции вставки элемента после i-го. Могу им поделиться, а дальше вам надо будет думать самому.

Цитата:
Проблема в том, что мы не изучали списков.
Вы учитесь в начале августа? Откуда у вас это задание? Если его дали перед началом лета, то почему не не обратились за помощью раньше?
Вадим Мошев вне форума Ответить с цитированием
Старый 15.08.2011, 15:38   #9
Аким Ба
 
Регистрация: 09.08.2011
Сообщений: 7
По умолчанию

Если дадите, буду признателен!)

Задание получил в конце июня, июль отдыхал..сейчас начал что то делать)
Аким Ба вне форума Ответить с цитированием
Старый 15.08.2011, 16:13   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Аким Ба,
сходите в тему "Паскаль... Двухсвязный список !!!"
в этой теме есть ссылки на другие похожие темы/примеры...

а вообще примеров создания на Паскаль обычных двухсвязных списков много.
Вот примера с обёрткой это в класс я не нашёл (думаю, что просто плохо искал),но в любом случае, это можно и самому дописать...


вот, набросал простенький пример...

Код:
{ класс, реализующий линейный двухсвязный список }

type
  PList = ^TList;
  TList = record
    inf  : integer;
    prior: PList;
    next : PList
  end;

  TListDual = object
  private
    pfirst, plast : PList;
  public
    constructor Init;
    destructor RemoveList;
    procedure Print_forward;
    procedure Print_back;
    procedure Insert( NewInf : integer);
  end;

constructor TListDual.Init; {инициализация списка }
begin
  pfirst := nil; plast := nil;
end;


destructor TListDual.RemoveList; {уничтожение списка}
var
  q: Plist;
begin
  if pfirst = nil then writeln('List not init')
  else
  begin
    while pfirst <> nil do
    begin
      q := pfirst;
      pfirst := pfirst^.next;
      dispose(q);
    end;
  end;
  plast := nil;
end;

procedure TListDual.Print_forward; { процедура печати элементов с первого(начало) }
var start : PList;
begin
  if pfirst = nil then writeln('List not init')
  else
  begin
    start := pfirst;
    while (start <> nil) do
    begin
      write(start^.inf, ' ');
      start := start^.next;
    end;
    WriteLn;
  end;
end;

procedure TListDual.Print_back; { процедура печати элементов с последнего(начало) }
var last : PList;
begin
  if plast = nil then writeln('List not init')
  else
  begin
    last := plast;
    while (last <> nil) do
    begin
      write(last^.inf, ' ');
      last := last^.prior;
    end;
    WriteLn;
  end;
end;


procedure TListDual.Insert( NewInf : integer); {процедура вставки элементов в конец списка(информационная часть) }
var
  p : PList;
begin
  new(p);
  p^.inf := NewInf;
  p^.next := nil;
  if (pfirst=nil) and (plast=nil) {если пустой список} then
  begin
    pfirst := p;
    pfirst^.prior := nil;
  end
  else {список не пуст, добавляем элемент в конец и корректируем указатели}
  begin
    plast^.next := p;
    p^.prior := plast;
  end;
  plast := p;
end;



{тело программы}
var 
  List1 : TListDual;
begin
   List1.Init;
   List1.Insert(2);
   List1.Insert(3);
   List1.Insert(5);
   List1.Insert(7);
   WriteLn('--- печать списка в прямом направлении ---');
   List1.Print_forward;
   WriteLn('--- печать списка в обратном направлении ---');
   List1.Print_back;

   {уничтожим список}
   List1.RemoveList;


   Readln; {ожидаем Enter, }
end.

Последний раз редактировалось Serge_Bliznykov; 15.08.2011 в 17:07.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Класс линейный список valdemar593 Помощь студентам 2 19.04.2010 20:21