Главная  Полное построение алгоритма 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [ 20 ] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117]

один

ЧЕТЫРЕ

PREV PTR

PREV

один

ЧЕТЫРЕ

один

ЧЕТЫРЕ

PREV

один

ДВА PREV

Г> ЧЕТЫРЕ

« PTR

г-+-1

Рис. 2.3.7. Внесение ячейки в связанный список.

бует меньше памяти. На рис. 2.3.10, в приведено представление сети G с рис. 2.3.10, а в форме связанного списка. Это представление зависит как от разметки вершин &i, v, . . ., так и от порядка, в котором задаются ребра G (случайное упорядочение ребер приведено на рис. 2.3.10, б).

Чтобы определить, какие вершины являются смежными для данной вершины при представлении в форме связанного списка, мы должны следовать указателям в столбце с названием NEXT. Например, для того чтобы найти вершины, смежные с вершиной 3, мы определяем, что NEXT (3)=12. Проверяя двенадцатую строку, мы видим, что ADJ (12)=4, т. е. вершина 3 смежна вершине 4. Мы также видим, что NEXT(12)=7.. Так как ADJ (7)=1, вершина 3 смежна с. вершиной. 1...



Bbiipamb пврбую ячейку


До /писок

ЛоМоть нот ячеаку слерейи


►О"

пуст

ячейку т &инстоенную

ячейку В KOHufi cnucim

Рис. 2.3.8. Блок-схема алгоритма INSERT (ВНЕСЕНИЕ).

И*наконец, так как NEXT(7)==0, вершина 3 не смежна ни с какой другой вершиной.

Это представление требует 2(М 1-2Л) слов памяти, где М. - число вершин и - число ребер в G. Заметим, что 2М этих слов ADJ (1), . . . , ADJ(M) и М слов, для которых NEXT (0=0, имеют значение, равное 0. Впрочем, первые М слов массива ADJ могут быть использованы для хранения полезной информации о вершинах Wi, v-i, . . . , Vj. Например, в них можно запоминать значения степеней dt для vt.



SUBROUTiNE INSERT (FlRSTtINFO,LINK.ROW.VflLUE) INTEGER INFO<500).UINK<5t)0),FIRST.ROW.VALUE,PREVtPTR

ВЫБОР ПЕРВОЙ ЯЧЕЙКИ.

РТР = FIRST PREV = О

ПРОВЕРКА, ПУСТА ЛИ ЯЧЕЙКА. IF ( PTR .NE. О 1 GOTO 40 ТОГДА (ПУСТ ЛИ, СПИСОК)

IF ( PREV .NE. О I GOTO 30

ТОГДА (ВКЛЮЧЕНИЕ ЯЧЕЙКИ КАК ЕДИНСТВЕННОЙ В СПИСКЕ)

FIRST = ROW LINK(ROW) = О FiETURN

ИНАЧЕ (ДОБАВЛЕНИЕ ЯЧЕЙКИ В КОНЦЕ СПИСКА)

LINK(PREV) = Row LINK(ROW) = О RETURN

ПРОВЕРИТЬ, ПРЕДШЕСТВУЕТ ЛИ НОВАЯ ЯЧЕЙКА ВЫБРАННОЙ.

IF ( VALUE .GT. INFO(PTR) ) GqTO 60

ТОГДА (ВНОСИТСЯ /1И ОНА СПЕРЕДИ)

IF ( PREV .NE. О ) GOTO 70

ТОГДА (ДОБАВИТЬ ЯЧЕЙКУ СПЕРЕДИ)

FIRST = ROW LINK(ROW) = PTR RETURN

ИНАЧЕ (добавить ЯЧЕЙКУ ВНУТРЬ)

LINK(PREV) = ROW LINK(ROW) = PTR RETURN

ВЫБОР НОВОЙ ЯЧЕЙКИ

PREV = PTR PTR = LINK(PTR> GOTO 5 . .

Рис. 2.3.9. Реализация алгоритма INSERT (ВНЕСЕНИЕ).



[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [ 20 ] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117]

0.0016