Учитывая массив, создайте связанный список элементов, которые удовлетворяют определенным условиям - PullRequest
0 голосов
/ 29 октября 2019

Мне дали это задание в колледже, которое состоит из следующего:


Если слово - это массив букв, а словарь - это массив слов, учитывая функцию, которая определяет, является ли словопрефикс другого. Код на паскале - это функция, которая создает односторонний связанный список слов, являющихся префиксами данного слова.

Заголовок функции должен быть следующим: function CompleteWord (префикс: WordType; словарь:VocabularyType): WordList;

WordType и VocabularyType - это просто верхние массивы, максимальное количество ячеек которых определяется константами с именами MaxVocabulary и MaxLength

Мне удалось закодировать булеву функцию с именем itsPrefix , который определяет, является ли данное слово префиксом другого, поэтому мне оставлено только кодирование функции CompleteWord, а также мне не разрешено использовать следующие средства pascal: использовании, crlscr, gotoxy, crt, readkey, longint, string, break, так что я могу использовать только такие вещи, как арифметические и логические операторы, если, case, для, while, repeat.

Так, например, если я применяю функцию к слову HELL и словарь HELLO, BIRD, TABLE, HELL функция вернет менясписок, содержащий слова HELLO и HELL


Список WordList определен так, что:

type
     WordList= ^cell;
     cell= record
        info : WordType;
        following: WordList
     end;

Хотя он встречается с ошибкой, это лучшее, что мне удалось закодировать

function CompleteWord(prefix: WordType; vocabulary: VocabularyType) : WordList;
 var
  g:integer;
  ListaAUX:WordList;
 begin
  new(ListaAUX);
  ListaAUX:=nil;
  for g:=1 to MaxVocabulary do
   if (itsPrefix(prefix,vocabulary[g])) then
    begin
     new(ListaAUX^.following);
     ListaAUX:=ListaAUX^.following;
     ListaAUX^.info:=vocabulary[g];
    end;
 ListaAUX^.following:=nil;
 CompleteWord:=ListaAUX;
 end;

Примечание: булева функция itsPrefix хорошо работает сама по себе и с другими функциями, поэтому проблема не в этом, код функции не предоставляется, так как он использует различные другие функции, которые делаютслишком большой вопрос

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

...