![]() |
|
#1
|
|||
|
|||
![]() Из матрицы инциденций создать список инциденций в виде массива односвязных линейных списков.
Саму суть преобразования понимаю,но с массивами списков никогда не работал. Может кто-нибудь помочь или хотя бы дать посмотреть какую-нибудь программу с массивом списков? |
#2
|
|||
|
|||
![]() Сам св. список реализуется с помощью след. структуры:
Код:
type PNode = ^TNode; TNode = record Data : Integer; // Например, храним целое число. Или любой другой тип Next : PNode; end; Соответственно, массив определяется так: Код:
var A : Array Of PNode; |
#3
|
|||
|
|||
![]() Как объявлять массив я понимаю. Не знаю как дальше работать с ним. Списки в массиве будут разной длины.
Входные данные 1 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 1 1 1 Выходные PNode1 - 2 - 5 PNode2 - 1 - 3 - 5 PNode3 - 2 - 3 PNode4 - 5 PNode5 - 1 - 2 - 3 - 4 (это списки, которые будут создаваться по матрице и их каким-то образом нужно поместить в массив) |
#4
|
|||
|
|||
![]() Ну так у тебя в массиве уже есть заготовки для соотв. списков. Просто добавляй туда элементы.
Код:
procedure AddItemToList(var AList : PNode; AItem : Integer); var NewNode : PNode; Head : PNode; begin New(NewNode); NewNode.Data := AItem; NewNode.Next := Nil; If AList = Nil Then AList := NewNode Else Begin Head := AList; While Head.Next <> Nil Do Head := Head.Next; Head.Next := NewNode; End; end; ... var I : Integer; A :Array [1..5] Of PNode; begin // На всякий случай обнуляем массив For I := Low(A) To High(A) Do A[i] := Nil; AddItemToList(A[1],2); AddItemToList(A[1],5); AddItemToList(A[2],1); AddItemToList(A[2],3); AddItemToList(A[2],5); AddItemToList(A[3],2); AddItemToList(A[3],3); AddItemToList(A[4],5); AddItemToList(A[5],1); AddItemToList(A[5],2); AddItemToList(A[5],3); AddItemToList(A[5],4); ... Последний раз редактировалось lmikle, 13.02.2016 в 05:44. |