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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2011, 17:02   #1
Ghost1k
Новичок
Джуниор
 
Регистрация: 02.03.2011
Сообщений: 1
Восклицание Программная реализация динамического списка динамических очередей

Короче пишу курсовую:

Цель работы: Разработать набор подпрограмм для реализации основных операций с заданной составной структурой.

Требования к программе:

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

2. Информационные составляющие элементов структуры хранятся отдельно в динамической памяти и адресуются указателями.

3. Программная реализация выполняется в среде Windows с помощью пакета Delphi (или С++, С) с использованием стандартных компонентов отображения данных или в виде консольного приложения с простейшим диалогом.

Типовой набор операций:

- добавление нового элемента – как в основную, так и во вспомогательную структуру

- удаление заданного элемента - как из основной структуры (при этом удалить всю вспомогательную структуру), так и из вспомогательной

- поиск заданного элемента

- просмотр всей структуры



Возникла проблема...как можно удалить элемент из основной и из вспомогательной структуры? разве это возможно??? тоже самое и с поиском заданного элемента...относил одному знакомому преподу/

Вот что сказал: Список – это основная структура.
Очередь – это дополнительная структура.
Очередь имеет интуитивно понятное название. Элемент, который попал в очередь раньше, выйдет из нее также раньше (т.е. элементы извлекаются в порядке поступления). По-английски очередь называется queue («кью») или FIFO (First In - First Out).
Для очереди существует всего две (подчеркнуто два раза) операции: извлечь элемент из головы (head) очереди (queue) и добавить элемент в хвост (tail) очереди (enq).
Итак, проблема:
1.Удалить что-либо из очереди НЕЛЬЗЯ подчеркнуто два раза!!!
Нет механизмов удаления.
2.Найти что-либо в очереди НЕЛЬЗЯ подчеркнуто два раза!!!
Нет механизмов доступа к произвольному члену.

скажи как можно это реализовать? плиз обьясните, а то я уже не знаю что делать(

Последний раз редактировалось Ghost1k; 02.03.2011 в 17:06.
Ghost1k вне форума Ответить с цитированием
Старый 02.03.2011, 17:25   #2
Летучий_СкилетиК
Форумчанин
 
Аватар для Летучий_СкилетиК
 
Регистрация: 04.02.2011
Сообщений: 260
По умолчанию

Цитата:
1.Удалить что-либо из очереди НЕЛЬЗЯ подчеркнуто два раза!!!
Нет механизмов удаления.
2.Найти что-либо в очереди НЕЛЬЗЯ подчеркнуто два раза!!!
Нет механизмов доступа к произвольному члену.
Это все понятно, а вот что вам не понятно!?

Цитата:
Возникла проблема...как можно удалить элемент из основной и из вспомогательной структуры? разве это возможно???
Дошла его очередь используйте и удаляйте

Цитата:
поиск заданного элемента
ищите необходимый элемент по принципу
Цитата:
FIFO (First In - First Out)
, т.е просматриваете все элементы очереди что не наесть по очереди.
Летучий_СкилетиК вне форума Ответить с цитированием
Старый 30.08.2011, 22:41   #3
4tr
Новичок
Джуниор
 
Регистрация: 30.08.2011
Сообщений: 1
Восклицание

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

использую :
PHP код:
type
  TP_Struct 
= ^T_Struct;
  
T_Struct record
  name
string;
  
idinteger;
  
parentTP_struct;
  
childTP_struct;
  
prevTP_struct;
  
nextTP_struct
функция поиска идентификатора
PHP код:
 function find_item_id(fbody:TP_Struct;id:integer):TP_Struct;
var
 
f_bodyTP_Struct;
 
tempTP_Struct;
begin

  result
:=nil;
  if 
fbody nil then
  begin
    f_body
:=body;// body: TP_Struct; ссылка на первый элемент
  
end
  
else
  
begin
    f_body
:=fbody;
  
end;

  while (
f_body <> nil)AND(result nil) do
  
begin
    
if f_body^.id id then
    begin
      result
:=f_body;
      
//f_body:=nil;
    
end
    
else
    
begin
      temp
:=nil;
      if 
f_body.child <> nil then temp:=find_item_id(f_body.child,id);
      if 
temp <> nil then
      begin
        result
:=temp;
        
//f_body := nil;
      
end;
    
end;
    if 
f_body <> nil then f_body := f_body.prev;
  
end;
end
функция работает нормально выводя по запросу данные, которые можно присвоив к переменной (например temp) использоваь как temp.name без ошибок. но при добавлении элементов я что-то напортачил и в режиме рантайм посылает (
PHP код:
procedure TForm1.v(SenderTObject);
var
  
currTP_Struct;
  
targetTP_struct;
  
tmpTP_Struct;
begin
  
new(curr);
  
curr^.name:=adfne.Text;
  
curr^.child:= nil;
  if 
id_struct 0 then id_struct:= 0;
  
id_struct:=id_struct+1;
  
curr^.id:=id_struct;

  if 
see.Selected.index > -1 then // see : Ttreeview
  
begin
    Target
:=find_item_id(nil,see.Selected.index);

    if 
pdadd.Checked then // добавить под текущим элементом
    
begin
      
//tmp:=curr.next;
      
if target.next nil then
      curr
.next:=nil
      
else
      
curr.next:=target.next;
      
curr^.child:=nil;
      
curr^.prev:=target;
      
curr^.parent:=Target.parent// тут в рантайме при добавлении падает (
      
Target.next.prev:=curr;
      
target.next:=curr;
    
end
    
else
    
begin
     
if insadd.Checked then // если добавить как "дитя" 
     
begin

      curr
.prev:=Target.child;

      
curr^.child:=nil;
      
curr^.next:=nil;
      
curr^.parent:=Target;
      
target.child:=curr;
     
end;
    
end;

  
end
  
else
  
begin
    
//добавление первой записи
    
curr^.prev:= body;//
    
curr^.next := nil;  //
    
curr^.parent :=nil//
    
curr^.child:=nil//
    
body:= curr;
  
end
прошу помочь... обычно сам помогаю другим проги писать а тут не вкурю в тонкость...
использую delphi 7 с формами... (эт так на всякий)
4tr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программная реализация однонаправленного линейного списка Денис Ст Помощь студентам 2 14.01.2014 21:50
реализация упорядоченного динамического списка динамических стеков(Delphi) berezka Помощь студентам 3 28.12.2010 19:40
Программная реализация алгоритма сжатия текста методом LZP mr.hankey2008 Общие вопросы .NET 1 28.05.2010 22:16
Реализация стеков и очередей kaizer131 Общие вопросы Delphi 7 25.02.2010 17:08
интероляция.программная реализация на Паскаля Lampard Помощь студентам 2 20.02.2009 00:27