Однонаправленные линейные списки (доделать код) - 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.
Объяснение кода листинга программы
- В начале кода определяются константы и тип данных.
- Функция NewNode создает новый узел списка, копируя строку и присваивая значения переменным n и s.
- Функция listAdd добавляет строку в список. Если в списке уже есть строка с таким же именем, то увеличивается значение переменной n. Если строки нет, то создается новый узел и добавляется в список.
- Функция listWriteLn выводит все строки из списка на экран.
- Функция listFree освобождает память, выделенную под узлы списка.
- Основная часть программы начинается с инициализации переменных и создания пустого списка.
- Затем программа считывает строки из файла 'input.txt' до конца файла.
- После чтения всех строк из файла, программа выводит список на экран.
- Затем программа освобождает память, выделенную под узлы списка.
- В конце программы закрываются файлы 'input.txt' и 'output.txt'.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д