Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program ArrayOfRecords4;
- uses
- crt;
- type
- pSubListItem = ^TSubListItem;
- TSubListItem = record
- info : integer;
- next : pSubListItem;
- end;
- pSubList = ^TSubList;
- TSubList = record
- pFirst : pSubListItem;
- end;
- TMainArray = array[1..4] of pSubList;
- var
- mArray : array[1..4] of pSubList;
- pTemp : pSubListItem;
- countOfSubLists, i, ii, element : integer;
- answer, answer2, answer3 : byte;
- procedure whileOutput(pTempL : pSubListItem);
- begin
- while (pTempL <> nil) do
- begin
- write(pTempL^.info);
- pTempL := pTempL^.next;
- if (pTempL = nil) then break;
- write(' ');
- end;
- end;
- procedure output;
- begin // []
- writeln(' Current array of records:'); // [22 33]
- for i := 1 to 4 do // [55]
- begin
- //if (mArray[i]^.pFirst <> nil) then
- pTemp := mArray[i]^.pFirst;
- //write(pTemp <> nil);
- write(i, ' sublist: [');
- //if mArray[1]^.pFirst^.info = ;
- //whileOutput(pTemp);
- while (pTemp <> nil) do
- begin
- //writeln('what`s up bro');
- write(pTemp^.info);
- pTemp := pTemp^.next;
- if (pTemp = nil) then break;
- write(' ');
- end;
- writeln(']');
- //write('----- ');
- //for ii := 1 to 4 do
- //if (mArray[ii]^.pFirst <> nil) then write(ii, '-', mArray[ii]^.pFirst^.info);
- //writeln(' -----');
- end;
- end;
- procedure outputSubList(subList : integer);
- begin
- pTemp := mArray[subList]^.pFirst;
- write(subList, ' sublist: [');
- //whileOutput(pTemp);
- while (pTemp <> nil) do // занести while как отдельную процедуру
- begin
- write(pTemp^.info);
- pTemp := pTemp^.next;
- if (pTemp = nil) then break;
- write(' ');
- end;
- writeln(']');
- end;
- function back(ans : integer) : boolean;
- begin
- if (ans = 11) then back := true else back := false;
- end;
- procedure addAfter(ans, element : integer);
- var
- pTempPrev : pSubListItem;
- afterElement : integer;
- begin
- new(pTemp);
- pTemp^.info := element;
- if (mArray[ans]^.pFirst = nil) then
- begin
- pTemp^.next := nil;
- mArray[ans]^.pFirst := pTemp;
- end else // ans sublist: [22 33 11 55]
- begin
- write(' Enter the element after which add new element: ');
- readln(afterElement);
- pTempPrev := mArray[ans]^.pFirst;
- while (pTempPrev^.info <> afterElement) do
- begin
- pTempPrev := pTempPrev^.next;
- end;
- if (pTempPrev^.next <> nil) then pTemp^.next := pTempPrev^.next;
- pTempPrev^.next := pTemp;
- end;
- end;
- procedure remove(ans : integer);
- var
- pTempPrev, pTempHelp : pSubListItem;
- element : integer;
- begin
- write(' Enter the element to remove: ');
- readln(element);
- pTempPrev := mArray[ans]^.pFirst;
- while (pTempPrev^.info <> element) do
- begin
- pTempHelp := pTempPrev;
- pTempPrev := pTempPrev^.next; // [22 33 55 66 11]
- end;
- if (pTempPrev = mArray[ans]^.pFirst) then
- begin
- mArray[ans]^.pFirst := mArray[ans]^.pFirst^.next;
- end else
- begin
- pTempHelp^.next := pTempHelp^.next^.next;
- end;
- end;
- begin
- for i := 1 to 4 do
- begin
- new(mArray[i]);
- mArray[i]^.pFirst := nil;
- end;
- countOfSubLists := 0;
- repeat
- begin
- writeln('1. Choose the sublist to add or remove element(s): ');
- writeln('2. Removing');
- writeln('3. Output');
- writeln('11. Exit');
- readln(answer);
- case answer of
- //begin
- 1:
- begin
- output;
- write(' Choose the sublist to add element(s)(from 1 to 4): ');
- readln(answer2);
- repeat
- outputSubList(answer2);
- writeln('1. Add elements to sublist after element');
- writeln('2. Remove elements from current sublist');
- writeln('11. Back');
- readln(answer3);
- case answer3 of
- 1: // 1 sublist: [22 33]
- begin
- write(' Enter the new element: ');
- readln(element);
- addAfter(answer2, element);
- end;
- 2:
- begin
- outputSubList(answer2);
- remove(answer2);
- end;
- end;
- until (answer3 = 11);
- end;
- 2:
- begin
- repeat
- output;
- writeln('1. Remove elements from sublist');
- writeln('2. Remove sublist');
- writeln('3. Remove all sublists');
- writeln('11. Back');
- readln(answer2);
- case answer2 of
- 1:
- begin
- write(' Choose the sublist: ');
- readln(answer3);
- outputSubList(answer3);
- remove(answer3);
- end;
- 2:
- begin
- write(' Choose the sublist: ');
- readln(answer3);
- mArray[answer3]^.pFirst := nil;
- end;
- 3:
- begin
- for i := 1 to 4 do
- begin
- mArray[i]^.pFirst := nil;
- end;
- end;
- end;
- until (answer2 = 11);
- end;
- 3:
- begin
- output;
- end;
- end;
- end until (answer = 11);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement