Advertisement
Guest User

Untitled

a guest
Dec 7th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.75 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. class SLLNode<E> {
  4. public E element;
  5. protected SLLNode<E> succ;
  6.  
  7. public SLLNode(E element,SLLNode<E> succ)
  8. {
  9. this.element = element;
  10. this.succ = succ;
  11.  
  12. }
  13. E getElement()
  14. {
  15. return element;
  16. }
  17. public void setElement(E element) {
  18. this.element = element;
  19. }
  20.  
  21. }
  22.  
  23. class MapEntry<K extends Comparable<K>,E> implements Comparable<K> {
  24. // Each MapEntry object is a pair consisting of a key (a Comparable // object) and a value (an arbitrary object).
  25. K key; E value;
  26. public MapEntry (K key, E val) {
  27. this.key = key;
  28. this.value = val;
  29. }
  30.  
  31. public int compareTo (K that) {
  32. // Compare this map entry to that map entry. @SuppressWarnings("unchecked")
  33. MapEntry<K,E> other = (MapEntry<K,E>) that;
  34. return this.key.compareTo(other.key);
  35. }
  36. public String toString () {
  37. return "<" + key + "," + value + ">";
  38. }
  39. }
  40.  
  41. class CBHT<K extends Comparable<K>, E> {
  42. private SLLNode<MapEntry<K, E>>[] buckets;
  43.  
  44. @SuppressWarnings("unchecked")
  45. public CBHT(int m) {
  46. // Construct an empty CBHT with m buckets.
  47. buckets = (SLLNode<MapEntry<K, E>>[]) new SLLNode[m];
  48. }
  49.  
  50. int hash(K key) {
  51. // Translate key to an index of the array buckets.
  52. return Math.abs(key.hashCode()) % buckets.length;
  53. }
  54.  
  55. public SLLNode<MapEntry<K, E>> search(K targetKey) {
  56. // Find which if any node of this CBHT contains an // entry whose key is equal
  57. // to targetKey. // Return a link to that node (or null if there is none).
  58. int b = hash(targetKey);
  59. for (SLLNode<MapEntry<K, E>> curr = buckets[b]; curr != null; curr = curr.succ) {
  60. if (targetKey.equals(((MapEntry<K, E>) curr.element).key))
  61. return curr;
  62. }
  63. return null;
  64. }
  65.  
  66. public void insert(K key, E val) {
  67. // Insert the entry <key, val> into this CBHT.
  68. MapEntry<K, E> newEntry = new MapEntry<K, E>(key, val);
  69. int b = hash(key);
  70. for (SLLNode<MapEntry<K, E>> curr = buckets[b]; curr != null; curr = curr.succ) {
  71. if (key.equals(((MapEntry<K, E>) curr.element).key)) { // Make newEntry replace the existing entry ...
  72. curr.element = newEntry;
  73. return;
  74. }
  75. } // Insert newEntry at the front of the 1WLL in bucket b ...
  76. buckets[b] = new SLLNode<MapEntry<K, E>>(newEntry, buckets[b]);
  77. }
  78.  
  79. public void delete(K key) {
  80. // Delete the entry (if any) whose key is equal // to key from this CBHT.
  81. int b = hash(key);
  82. for (SLLNode<MapEntry<K,E>> pred = null, curr = buckets[b]; curr != null; pred = curr, curr = curr.succ)
  83. {
  84. if (key.equals(((MapEntry<K,E>) curr.element).key))
  85. {
  86. if (pred == null)
  87. buckets[b] = curr.succ;
  88. else
  89. pred.succ = curr.succ; return;
  90. }
  91. }
  92. }
  93. }
  94.  
  95. public class RoutingHashJava {
  96.  
  97. public static void main(String[] args) {
  98. Scanner input = new Scanner(System.in);
  99. int n = input.nextInt(); // broj na ruteri shto kje se vnesuvaat
  100.  
  101. //System.out.println("test1: n = " + n);
  102.  
  103. String interfejs;
  104. CBHT<String,String> routingTable = new CBHT<String,String>(n);
  105.  
  106. String[]zapisi;
  107. String podatociEdenRuter;
  108. interfejs = input.nextLine(); // za da go prochita /n od prethodniot input
  109.  
  110. for(int i=0;i<n;i++)
  111. {
  112. //vlezen interfejs na i-tiot ruter
  113.  
  114. interfejs = input.nextLine();
  115.  
  116.  
  117. //ip adresi na mrezhite do koi ruterot ima statichki ruti
  118. podatociEdenRuter = input.nextLine();
  119.  
  120. zapisi = podatociEdenRuter.split(",");
  121.  
  122. for(int j=0; j<zapisi.length ; j++)
  123. {
  124. routingTable.insert(interfejs, zapisi[j]);
  125.  
  126.  
  127. }
  128.  
  129. }
  130. // vnesuvame broj na obidi za rutiranje
  131.  
  132. int brojObidi = input.nextInt();
  133. //System.out.println("test4: brojObidi " + brojObidi);
  134.  
  135. String baranaIP;
  136.  
  137. for(int i = 0; i<brojObidi ; i++)
  138. {
  139.  
  140. String keyInterface = input.next(); // ova e eden element od nizata
  141.  
  142.  
  143.  
  144. baranaIP = input.next();
  145.  
  146.  
  147.  
  148. SLLNode<MapEntry<String,String>> baranJazol = routingTable.search(keyInterface);
  149.  
  150. int daliNajden = 0;
  151.  
  152. while(baranJazol!=null)
  153. {
  154.  
  155.  
  156. String zapis = baranJazol.element.value;
  157.  
  158. String[] prviTriTabela = zapis.split("\\.");
  159. String[] prviTriBarana = baranaIP.split("\\.");
  160.  
  161.  
  162.  
  163. if((prviTriTabela[0].equals(prviTriBarana[0]))&&(prviTriTabela[1].equals(prviTriBarana[1]))&&(prviTriTabela[2].equals(prviTriBarana[2])))
  164. {
  165.  
  166. System.out.println("postoi");
  167.  
  168. daliNajden = 1;
  169. break;
  170. }
  171.  
  172.  
  173. baranJazol = baranJazol.succ;
  174.  
  175. }
  176. if(daliNajden ==0)
  177. System.out.println("ne postoi");
  178.  
  179.  
  180.  
  181.  
  182. }
  183. }
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement