You are on page 1of 3

package pachetel;

class Node{
int data;
Node prevnod;
int pozitia; // number nod
Node head;
}

class NodeHeap extends Node {


int pozitia=0; // number nod
public Node zero;

public void add(int nr){


Node n=new Node();
n.pozitia=pozitia+1;
pozitia=pozitia+1;
n.data=nr;
n.prevnod=zero;
zero=n;
sortare1();
head=zero;
}

public boolean sortare(){


boolean ok=false;
Node now=new Node();
now=zero;
while (now.prevnod!=null) {
int aux=0;
if(now.data>now.prevnod.data){
aux=now.prevnod.data;
now.prevnod.data=now.data;
now.data=aux;
ok=true;
}
now=now.prevnod;
}
return ok;
}

public void Heap_increase_key(Node n1,int poz, int val){


Node node=new Node();
node=n1.head;
int var;
while(node!=null){
var=node.data;
if(node.pozitia==poz){
if(var>val){
node.data=var;
}else{
node.data=val;
}
}
node=node.prevnod;
}
sortare1();
}
public void Heap_delete(Node n3,int poz){
Node n1=new Node();
Node n2=n3.head;
int ok=0;
while((n2.prevnod!=null)&(ok==0)){
ok=0;
if(n2.pozitia==poz){
n1.prevnod=n2.prevnod;ok=1;
}
n2.pozitia=n2.pozitia-1;
n1=n2;
n2=n2.prevnod;
}
if(ok==1){
int i=n2.pozitia;
while(n2.pozitia>poz){
n2.pozitia=i-1;
}
}
}

public void sortare1(){


while(sortare()){
sortare();
}
}

public void afisare(){


Node now=new Node();
now=zero;
while(now!=null){
System.out.println("nod "+now.pozitia+":"+now.data);
now=now.prevnod;
}
System.out.println("");
}

public void afisare2(Node n1){


Node now=new Node();
now=n1.head;
while(now!=null){
System.out.println("nod "+now.pozitia+":"+now.data);
now=now.prevnod;
}
System.out.println("");
}

}
class Heap extends NodeHeap{
NodeHeap n=new NodeHeap();

public void merge(Node n1, Node n2){


Node a=n1.head;
Node k=n2.head;
while(a!=null){
n.add(a.data);
a=a.prevnod;
//System.out.println("merge "+a.data);
}
while(k!=null){
n.add(k.data);
k=k.prevnod;
//System.out.println("merge "+k.data);
}
afisare2(n);

}
}

public class Rulare extends NodeHeap {

public static void main(String[] args) {


NodeHeap node=new NodeHeap();
NodeHeap node1= new NodeHeap();
Heap n=new Heap();
node.add(5);
node.add(6);
node.add(10);
node.add(20);
node.add(1);
node.add(7);
node.afisare();

node.Heap_increase_key(node, 6, 13);
node.afisare();

node.Heap_delete(node, 2);
node.afisare();

node1.add(9);
node1.add(14);
node1.add(3);
node1.afisare();

node1.Heap_increase_key(node1, 3, 31);
node1.afisare();

n.merge(node, node1);
}

You might also like