Однонаправленные линейные списки (доделать код) - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Программа должна выводить список имен и их количество в файле, используются списки Помогите дописать код, чтобы программы работала Данные: dan.inp.txt

Решение задачи: «Однонаправленные линейные списки (доделать код)»

textual
Листинг программы
const NameStart=22; NameLen=11;
type
  TName = String[NameLen];
  PNode = ^TNode;
  TNode = record
    next: PNode; s: TName; n: Integer;
  end;
function  NewNode(const s_: String; next_: PNode): PNode;
var t: PNode;
begin
  New(t); t^.next:=next_; t^.s:=s_; t^.n:=1; NewNode:=t;
end;
procedure listAdd(var list: PNode; const s: String);
var t: ^PNode;
begin
  t:=@list;
  while (t^<>nil) and (t^^.s<s) do t:=@(t^^.next);
  if (t^<>nil) and (t^^.s=s) then Inc(t^^.n) else t^:=NewNode(s,t^);
end;
procedure listWriteLn(var f: Text; p: PNode);
begin while p<>nil do with p^ do begin
    WriteLn(f,n:4,' ',s); p:=next;
end; end;
procedure listFree(var p: PNode);
var t: PNode;
begin while p<>nil do begin
   t:=p; p:=p^.next; Dispose(t);
end; end;
var
  fi, fo: Text;
  list: PNode;
  s: String;
begin
  Assign(fi,'input.txt'); Assign(fo,'output.txt');
  Reset(fi); Rewrite(fo); {p:=nil;}
  while not SeekEoF(fi) do begin
    ReadLn(fi,s); listAdd(list,Copy(s,NameStart,NameLen));
  end;
  listWriteLn(fo,list); listFree(list);
  Close(fo); Close(fi);
end.

Объяснение кода листинга программы

  1. В начале кода определяются константы и тип данных.
  2. Функция NewNode создает новый узел списка, копируя строку и присваивая значения переменным n и s.
  3. Функция listAdd добавляет строку в список. Если в списке уже есть строка с таким же именем, то увеличивается значение переменной n. Если строки нет, то создается новый узел и добавляется в список.
  4. Функция listWriteLn выводит все строки из списка на экран.
  5. Функция listFree освобождает память, выделенную под узлы списка.
  6. Основная часть программы начинается с инициализации переменных и создания пустого списка.
  7. Затем программа считывает строки из файла 'input.txt' до конца файла.
  8. После чтения всех строк из файла, программа выводит список на экран.
  9. Затем программа освобождает память, выделенную под узлы списка.
  10. В конце программы закрываются файлы 'input.txt' и 'output.txt'.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.2 из 5
Похожие ответы