Bináris fa statikus és dinamikus megvalósításra lenne szükségem Pascal és C nyelven?
google - főleg Pascal bináris fa esetén - nem volt túl meggyőző...
Statikus és dinamikus megvalósítás érdekelne, valamint az, hogy mikor kiegyensúlyozott egy bináris fa és mikor nem...
Könyv is érdekelne, ahol a kezdetektől (rendezések, láncolt lista, stb) bemutatnak és végigmennek mindenen, ami a programozáshoz kellhet és természetesen a bináris fa is szerepelne benne.
Érdekelne az is, ha valakinek megvannak kidolgozva ezek az adatszerkezetek és valamilyen módon meg szeretné osztani velem.
typedef struct fa_elem { /* a fa egy eleme */
int szam; /* tárolt szám */
int hanyszor; /* elofordulási szám */
struct fa_elem *jobb; /* jobb mutató */
struct fa_elem *bal; /* bal mutató */
} FA_ELEM;
FA_ELEM *faepit(FA_ELEM *p, int n)
{
if (p == NULL) {
if ((p = (FA_ELEM*)malloc(sizeof(FA_ELEM))) == NULL) /* uj elem */
return(NULL); /* baj van !! */
p->szam = n;
p->hanyszor = 1;
p->bal = p->jobb = NULL;
} else if (n < p->szam) {
p->bal = faepit(p->bal, n); /* bal részáfaban tovább */
} else if (n > p->szam) {
p->jobb = faepit(p->jobb, n); /* jobb részfában tovább */
} else {
p->hanyszor++; /* számláló növelése */
}
return(p);
}
TYPE
KeyType = Integer; (* the type of key in Info part *)
TreeElementType = RECORD (* the type of the user's data *)
Key : KeyType;
(* other fields as needed. *)
END; (* TreeElementType *)
TreePtrType = ^TreeNodeType;
TreeNodeType = RECORD
Info : TreeElementType; (* the user's data *)
Left : TreePtrType; (* pointer to left child *)
Right : TreePtrType (* pointer to right child *)
END; (* TreeNodeType *)
TreeType = TreePtrType;
TraversalType = (Preorder, Inorder, Postorder);
(******************************************************)
PROCEDURE CreateTree
(VAR Tree : TreeType);
(* Initializes Tree to empty state. *)
BEGIN (* CreateTree *)
Tree := NIL
END; (* CreateTree *)
(*************************************************)
PROCEDURE FindNode
( Tree : TreeType;
KeyValue : KeyType;
VAR NodePtr : TreePtrType;
VAR ParentPtr : TreePtrType);
(* Find the node that contains KeyValue; set NodePtr to *)
(* point to the node and ParentPtr to point to its parent; *)
VAR
Found : Boolean; (* KeyValue found in tree? *)
BEGIN (* FindNode *)
(* Set up to search. *)
NodePtr := Tree;
ParentPtr := NIL;
Found := False;
(* Search until no more nodes to search or until found. *)
WHILE (NodePtr <> NIL) AND NOT Found DO
IF NodePtr^.Info.Key = KeyValue
THEN Found := True
ELSE (* Advance pointers. *)
BEGIN
--------------------------
Többi itt (de swag-ban van ennél jobb implementáció is):
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!