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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2012, 17:18   #1
Fatalita
Пользователь
 
Регистрация: 12.10.2011
Сообщений: 33
По умолчанию Кольцевой список

Нужна помощь.
Нужно написать программу, испоьзуя процедуры работы с кольцевым списком. Реализовать :
1) Операцию копирования элементов списка в массив
2) Сортировать произвольным методом
3) Поиск элементов в массиве по значению
4) Операцию считывания данных из файла в список
5) Сохранение списка в файл

Я написала, что могла. Проверьте и помогите продолжить - закончить. Спасибо)
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  dllptr = ^dlltype;
  dlltype = record
    info : Integer;
    next : dllptr;
    prev : dllptr;
  end;

procedure create(var pBegin, pEnd : dllptr; x : Integer); {создание списка}
begin
  New(pBegin);
  pBegin^.info := x;
  pBegin^.prev := pBegin;
  pBegin^.next := pBegin;
  pEnd := pBegin;
end;

procedure push(var pBegin, pEnd : dllptr; x : Integer );   {добавление в начало}
var pAux : dllptr;
begin
  New(pAux);
  pAux^.prev := pEnd;
  pAux^.next := pBegin;
  pAux^.info := x;
  pBegin^.prev := pAux;
  pEnd^.next := pAux;
  pBegin := pAux;
end;

procedure append(var pBegin, pEnd : dllptr; x : Integer ); {добавление в конец}
var pAux : dllptr;
begin
  New(pAux);
  pAux^.next := pBegin;
  pAux^.prev := pEnd;
  pAux^.info := x;
  pEnd^.next := pAux;
  pBegin^.prev := pAux;
  pEnd := pAux;
end;

procedure delBegin(var pBegin, pEnd : dllptr); {удаление из начала}
var pAux : dllptr;
begin
  pAux := pBegin;
  pBegin := pBegin^.next;
  pBegin^.prev := pEnd;
  pEnd^.next := pBegin;
  Dispose(pAux);
end;

procedure delEnd(var pBegin, pEnd : dllptr); {удаление из конца}
var pAux : dllptr;
begin
  pAux := pEnd;
  pEnd := pEnd^.prev;
  pEnd^.next := pBegin;
  pBegin^.prev := pEnd;
  Dispose(pAux);
end;

function SearchesTheValue(var pBegin, pEnd : dllptr) : dllptr;   {поиск по значению}
var tmp : dllptr;
begin
  tmp := pBegin;
  if pBegin <> nil then
    if pBegin^.prev = pEnd then
      SearchesTheValue := pBegin
    else
    begin
      pBegin := pBegin^.next;
      while (pBegin <> tmp) and (pEnd <> pBegin^.prev) do
        pBegin := pBegin^.next;
      if pBegin = tmp then
        pBegin := nil;
    end;
  SearchesTheValue := pBegin;
end;
Fatalita вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кольцевой список в C# Jekon Помощь студентам 0 27.11.2010 16:02
Си. Кольцевой список F_A_N_Alex Помощь студентам 3 06.10.2009 08:20
Кольцевой список blade288 Помощь студентам 3 02.12.2007 20:53