Многоугольник <tex>P</tex> удобно хранить в виде двусвязного спика <tex>D</tex> рёбер и добавленных в процессе диагоналей, так как потом это обеспечит эффективный доступ к каждой из частей, которые нужно будет триангулировать.
===== Алгоритм Псевдокод =====
Псевдокод:
MakeMonotone(P)
Construct(<tex>D</tex>); Construct(<tex>Q</tex>); // функция Construct создаёт объекты<tex>D</tex> и <tex>Q</tex> , описанные выше. bst <tex>T</tex> = new bst(); while <tex> Q \neq \varnothing </tex> Remove <tex>v_{max}</tex> from Q // удаление вершины с наивысшим приоритетом из <tex>Q</tex> switch (Type_of_vertex(<tex>v_{max}</tex>)): //определение типа вершины case 'start': HandleStartVertex(<tex>v_{max}</tex>); case 'end': HandleEndVertex(<tex>v_{max}</tex>); case 'split': HandleSplitVertex(<tex>v_{max}</tex>); case 'merge': HandleMergeVertex(<tex>v_{max}</tex>); case 'regular': HandleRegularVertex(<tex>v_{max}</tex>);
==== Триангуляция монотонного многоугольника ====