Программа завершается раньше времени ,не работает dispose паскаль

Рейтинг: 0Ответов: 0Опубликовано: 06.04.2023
uses
   Crt;
type 
  Node = record
    valuev:real;
    next:^Node;
    prev:^Node;
  end;
var 
  header:^Node;
  NewNode:^Node;
  curNode:^Node;
  command:integer;
  
procedure Create_List(List:^Node);
var flag:boolean = True;
begin
  writeln('Введите первый элемент');
  Read(List^.valuev);
  List^.prev:= nil;
  List^.next:= nil;
  curNode:=List;
  while (flag) do 
    begin
      writeln('Хотите ввести новый элемент?(True если да ,False если нет)');
      Read(flag);
      if (flag) then
      begin
        New(NewNode);
        curNode^.next:= NewNode;
        Read(NewNode^.valuev);
        NewNode^.prev:=curNode;
        NewNode^.next:= nil;
        curNode:= NewNode
      end;
    end;
end;

procedure write_List(List:^Node);
var flag:Boolean = True;
begin
  curNode:= List;
  while(flag)do
    begin
      if(curNode^.next <> nil) then
        begin
         write(curNode^.valuev,' ');
         curNode:= curNode^.next;
        end
      else
        begin
          flag:=False;
          writeln(curNode^.valuev);
          writeln('');
        end;
    end;
  
end;
procedure delete_List(List:^Node);
var promvalue:^Node;
begin
  curNode:=List;
  while(curNode^.next <> nil) do
    begin
      promvalue:= curNode^.next;
      dispose(curNode);
      curNode:= promvalue;
    end;
  dispose(promvalue);
  dispose(curNode);
end;

begin 
  New(header); 
  while true do 
  begin  
    writeln('Выберите команду');
    writeln('1 Создать список');
    writeln('2 распечатать список');
    writeln('3 Удалить весь список');
    writeln('4 Вставить элемент');
    writeln('5 Удалить выбранный элемент');
    Read(command);
    ClrScr;
    case command of 
      1:Create_List(header);
      2:write_List(header);
      3:delete_List(header);
      else writeln('Чаво? ');
    end;
  end;
end.

Пытаюсь сделать двусвязный список ,с некоторым функционалом ,но почему-то функция удаления всего списка не удаляет список ,т.е при повторном выведении списка ничего не меняется и даже ошибки не выдаёт, помимо этого эта функция завершает программу. Что я не так сделал?

Ответы

Ответов пока нет.