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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2011, 05:01   #1
kitcon
 
Регистрация: 02.05.2011
Сообщений: 3
По умолчанию Динамический список массивов – стеков

Здравствуйте, помогите пожалуйста создать контейнер (взаимосвязные классы для объектной реализации специализированного контейнера) в Delphi7. Контейнер представляет собою двухуровневую структуру данных, в которой уровни реализуются разными способами, один статически на базе массива (непрерывная реализация), другой динамически с использованием адресных связей (связная реализация).
Кто может помогите, а то даже посоветоваться не с кем на данную тему.
kitcon вне форума Ответить с цитированием
Старый 09.05.2011, 02:16   #2
kitcon
 
Регистрация: 02.05.2011
Сообщений: 3
По умолчанию

Предполагаю, необходимо создать такого рода двухуровневую структуру:
класс класс
Динамич. список Массив-стеков
Элемент_1--------->5 4 3 2 1
|
Элемент_2--------->5 4 3 2 1
|
Элемент_3--------->5 4 3 2 1
|
Элемент_4--------->5 4 3 2 1
|
Элемент_5--------->5 4 3 2 1
В уме некое подобие этого предполагаю, а как всё это правильно сделать не знаю, точнее пробую...но не получается.
kitcon вне форума Ответить с цитированием
Старый 09.05.2011, 02:44   #3
kitcon
 
Регистрация: 02.05.2011
Сообщений: 3
По умолчанию

Класс динамического списка я написал такой.
Код:
unit Module1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
//структура списка--------
type
  pDLi=^DLi; //ссылочный тип
  DLi=record //базовый тип, определ.структуру элемента
  Inf: string; //иноформационная часть элемента
  Nex: pDLi; //указатель на следующий элемент
  Sub: pMSt; //указатель на начало стека
end;
//класс: список
type
  DL=class //класс
  private
    HEAD: pDLi; //голова списка
  public
    constructor CREATE; //создание пустой головы списка
    procedure ADD(item: string); //добавление
    procedure SHOW(st: string); //показать
    procedure DEL(dele: string); //удалить
end;
implementation
//конструктор: создание пустого списка
constructor DL.CREATE;
begin
  HEAD:=nil; //пустой список
end;
//добавить в список
procedure DL.ADD(item: string);
var cur: pDLi; //новый элемент
begin
  New(Cur); //выделим память для нового элемента
  cur^.Inf:=item; //записываем инфо.часть элемента
  cur^.Nex:=HEAD; //указываем на голову списка
  cur^.Sub:=nil; //указываем на пустой стек
  HEAD:=cur; //делаем элемент головой списка
end;
//показать
procedure DL.SHOW(st: string);
var curr: pDLi; //вспомогательная для прохода
begin
  curr:=HEAD; //ставим в начало списка
  if curr=nil then //если список пустой
  begin
    ShowMessage('Список пуст'); //выведем сообщение
    Exit; //выйти из процедуры
  end;
  while Curr<>nil do //проход по списку
  begin
    st:=st+curr^.Inf+#13; //сокраняем в переменнюю
    curr:=curr^.Nex; //переходим к следующему элементу
  end;
end;
//удалить
procedure DL.DEL(dele: string);
var curr: pDLi; //текущий элемент
    prev: pDLi; //предыдущий элемент
begin
  curr:=HEAD; //текущий элемент - в начало
  prev:=nil; //предыдущий отсутствует
  //проходим, пока не найдём нужный удаляемый элемент
  while (curr<>nil)and(curr^.Inf<>dele)do
  begin
    prev:=curr; //устанавливаем предыдущего
    curr:=curr^.Nex; //текущий адресуем на следующего
  end;
  if curr^.Inf=dele then
  begin
    //если предыдущий пуст, значит удаляем голову списка
    if prev=nil then
      HEAD:=curr^.Nex //головой списка делаем следующего
    else //иначе...
      prev^.Nex:=curr.Nex; //предыдущего адресуем на следующего после удаляемого
    Dispose(curr); //освобождаем память удоляемого (текущего)
  end;
end;
end.
Сейчас у меня встала проблема, как создать класс массива-стёков. Не могу класс массива-стёков привязать к классу динамического списка, что бы получилась двухуровневая структура. Прошу подскажите пожалуйста, с курсовиком целая запарка получается.
kitcon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический список music66 Помощь студентам 1 28.04.2011 17:14
Динамический список Sergey240892 Помощь студентам 7 18.04.2011 20:34
Динамический список в С серг Общие вопросы C/C++ 9 11.03.2010 13:39
Динамический список в С серг Общие вопросы C/C++ 0 04.03.2010 19:54
Динамический список Ker_33rus Общие вопросы C/C++ 3 04.03.2010 09:32