Advertisement
Adik28

Klasa węzeł

Oct 21st, 2013
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.17 KB | None | 0 0
  1. class Węzeł
  2. {
  3.     int wartość;
  4.     Węzeł rodzic;
  5.     Węzeł dzieckoL;
  6.     Węzeł dzieckoP;
  7.  
  8.         void dowiąż(int wartość)
  9.     //dowiązuje elementy w zależności jak będziemy je wstawiać
  10.  
  11.         int[] przechodzenie //idzie najbardziej na lewo jak się da, jak dalej nie może iść to zbiera tą                    wartość, koniec to obiekt który nie ma rodzica
  12. }
  13.  
  14. _______________________________________________________________________________________________________
  15. using System;
  16. using System.Collections.Generic;
  17. using System.Linq;
  18. using System.Text;
  19.  
  20. namespace Wezel1
  21. {
  22.     class Wezel
  23.     {
  24.         public Wezel dzieckoL = null;
  25.         public Wezel dzieckoP = null;
  26.         public Wezel rodzic = null;
  27.         public int wartosc;
  28.  
  29.         public Wezel(int p_wartosc)
  30.         {
  31.             this.wartosc = p_wartosc;
  32.         }
  33.  
  34.         public Wezel dodajDzieckoL(int p_wartosc)
  35.         {
  36.             //int[] tab = new int[10]; //przyklad do nastepnej linijki
  37.             Wezel dziecko = new Wezel(p_wartosc);
  38.             this.dzieckoL = dziecko;
  39.             dziecko.rodzic = this;
  40.             return this;
  41.         }
  42.         public Wezel dodajDzieckoP(int p_wartosc)
  43.         {
  44.             Wezel dziecko = new Wezel(p_wartosc);
  45.             this.dzieckoP = dziecko;
  46.             dziecko.rodzic = this;
  47.             return this;
  48.         }
  49.  
  50.         public void dodajWartosc(int p_wartosc) //funkcja dodaje do calego kopca //p_wartosc to zmienna lokalna wiec jest inna niz np p_wartosc w dodajDzieckoL
  51.         {
  52.             Wezel dziecko = new Wezel(p_wartosc);
  53.             Wezel tmp; //ktorys z wezlow, zeby oderwac sie z instancji
  54.             tmp = this;
  55.  
  56.             while (true)
  57.             {
  58.                 //petla zawzse sie wykonuje
  59.                 if (tmp.wartosc < dziecko.wartosc)
  60.                 {
  61.                     if (tmp.dzieckoP == null)
  62.                     {
  63.                         tmp.dodajDzieckoP(dziecko.wartosc);
  64.                         break;
  65.                     }
  66.                     else
  67.                     {
  68.                         tmp = tmp.dzieckoP;
  69.                     }
  70.                 }
  71.                 if (tmp.wartosc > dziecko.wartosc)
  72.                 {
  73.                     if (tmp.dzieckoL == null)
  74.                     {
  75.                         tmp.dodajDzieckoL(dziecko.wartosc);
  76.                         break;
  77.                     }
  78.                     else
  79.                     {
  80.                         tmp = tmp.dzieckoL;
  81.                     }
  82.                 }
  83.  
  84.             }
  85.  
  86.         }
  87.  
  88.         void dodajWartosc(int[] tab)
  89.         {
  90.             if (tab == null)
  91.                 return;
  92.             for (int i = 0; i < tab.Length; i++)
  93.             {
  94.                 this.dodajWartosc(tab[i]);
  95.             }
  96.         }
  97.  
  98.         public Wezel(int[] tab)
  99.         {
  100.             if ((tab == null) || (tab.Length < 1))
  101.             {
  102.                 throw new Exception("Nie można utworzyć węzła bez wartości");
  103.  
  104.             }
  105.             wartosc = tab[0];
  106.             List<int> tmp = tab.ToList(); //konwersja tablicy do listy
  107.             tmp.RemoveAt(0);
  108.             this.dodajWartosc(tmp.ToArray());
  109.  
  110.         }
  111.     }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement