Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/lib/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 1 kB image not shown  

Quelle  union_find.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0
#include <linux/union_find.h>

/**
 * uf_find - Find the root of a node and perform path compression
 * @node: the node to find the root of
 *
 * This function returns the root of the node by following the parent
 * pointers. It also performs path compression, making the tree shallower.
 *
 * Returns the root node of the set containing node.
 */

struct uf_node *uf_find(struct uf_node *node)
{
 struct uf_node *parent;

 while (node->parent != node) {
  parent = node->parent;
  node->parent = parent->parent;
  node = parent;
 }
 return node;
}

/**
 * uf_union - Merge two sets, using union by rank
 * @node1: the first node
 * @node2: the second node
 *
 * This function merges the sets containing node1 and node2, by comparing
 * the ranks to keep the tree balanced.
 */

void uf_union(struct uf_node *node1, struct uf_node *node2)
{
 struct uf_node *root1 = uf_find(node1);
 struct uf_node *root2 = uf_find(node2);

 if (root1 == root2)
  return;

 if (root1->rank < root2->rank) {
  root1->parent = root2;
 } else if (root1->rank > root2->rank) {
  root2->parent = root1;
 } else {
  root2->parent = root1;
  root1->rank++;
 }
}

Messung V0.5
C=96 H=90 G=93

¤ Dauer der Verarbeitung: 0.0 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.