Помощь - Поиск - Пользователи - Календарь
Полная версия: Динамические структуры данных
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Renbo
В учебнике есть его рисунок и там есть указатель на первый элемент First и на поседний ,как я понимаю, L.
Нажмите для просмотра прикрепленного файла

Вот что необходимо реализовать для начала:
1.Создание пустого списка.
2.Вывод на экран содержимого списка в виде таблицы.
3.Вставка элемента в начало, в конец списка (предусмотреть оба варианта).


ВОт что я сделал, но ИМХО вообще не то:


USES CRT;
TYPE

  EL=^zap;
  zap=record
    tabnom:integer;  {первое информационное поле, там содержится табельный номер}
    familia:string;      {второе информационное поле, там содержится фамилия}
    Next, Prev: EL;
  End;

VAR
  First,P,Q,T,E:EL;


Procedure Create_empty_List (Var First: EL);
Begin
  First:=NIL;
End;


Procedure Create_new_element (Var P:EL);
Begin
  NEW(P);
  writeln('Введите табельный номер:');
  readln(p^.tabnom);
  writeln('Введите фамилию сотрудника:');
  readln(p^.familia);
  p^.Next:=NIL;
  p^.Prev:=NIL;
End;


Procedure ListPrint (P:EL);
Begin
  p:=
  writeln(p^.tabnom,'   :   ',p^.familia);
      p:=p^.Next;
    end;
   readkey;
End;

procedure menu;
VAR
  F:integer;
  ch:char;
begin
  repeat
    F:=0;
    clrscr;
    writeln('Работа со списками:');
    writeln;
    writeln('1 -> Создание пустого списка');
    writeln('2 -> Формирование очередного элемента списка');
    writeln('3 -> Вывод списка на экран');
    writeln('4 ->');
    writeln('5 ->');
    repeat
      ch:=readkey;
      IF not(ch in ['1'..'5']) then
        begin
          writeln('неверная клавиша!');
          F:=F+1;
          if F=4 then
            begin
              writeln('программа завершена из-за неправильного ввода данных');
              writeln('нажмите любую кнопку для выхода');
              readkey;
            end
          else
            if F=3 then
              begin
               writeln('у вас ещё ', 4-F,' попытка');
               writeln('выберите существующий пункт подменю');
              end
            else
              begin
                writeln('у вас ещё ', 4-F,' попытки');
                writeln('выберите существующий пункт подменю');
              end;
        end;
    until (ch in ['1'..'5']) or (F=4);
    case ch of
      '1': Create_empty_List(First);
      '2': Create_new_element(P);
      '3': ListPrint(P);
      '4': ;
    end;
  until (F=4) or (ch='5');
end;


Begin
  menu;
End.




Что не так ?
P.s.: в названии темы указан определённый тип списка, с которым тут выполняется работа.
volvo
То есть, FAQ -> Все о динамических структурах данных. и поиск НИКАК не подойдут, надо самому велосипед придумать, так?

Добавлено через 2 мин.
А насчёт "что неправильно" - ну, сформировал ты новый элемент... А кто его со списком-то связывать будет? На него же ничто не указывает...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.