-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfibonacci.cpp
78 lines (70 loc) · 1.71 KB
/
fibonacci.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include<cstdlib>
#include"Fibonacci.h"
#include<string>
Fib* Create_Node(int data)
{
Fib* new_node=new Fib;
new_node->key=data;
new_node->left=new_node;
new_node->right=new_node;
new_mode->degree=0;
new_node->mark=FALSE;
new_node->child=NULL;
new_node->parent=NULL;
return new_node;
}
Fib* Insert(Fib*Head,int data){
Fib* new_node=Create_Node(data);
if(Head!=NULL){
Head->left->right=new_node;
new_node->left=Head->left;
Head->left=new_node;
new_node->right=Head;
if(Head->key > new_node->key)
Head=new_node;
}
else {
Head=new_node;
}
return Head;
}
Fib* Delete_Min(Fib*Head)
{
if(Head==NULL)
return NULL;
else if(Head->right==Head){
delete Head;
return NULL;
}
else {
Fib* temp=Head->child;
Fib*temp2=Head->right;
Head->child->left->right=Head->right;
Head->right->left=Head->child->left;
Head->child->left=Head->left;
Head->left->right=Head->child;
delete Head;
Head=temp2;
while(temp2->data!=temp->data){
temp2->parent=NULL;
temp2=temp2->left;
}
temp2->parent=NULL;
Head=Consolidate(Head);
return Head;
}
}
Fib* Meld(Fib*,Fib*);
Fib* Decrease_Key(Fib*, Fib*);
Fib* Consolidate(Fib*Head)
{
Fib**double_ptr=new Fib*[8];
int i;
for(i=0;i<8;i++) double_ptr[i]=NULL;
Fib* temp=Head;
Fib*temp2=Head->left;
while(temp!=temp2){
}
}
Fib* Heap_Link(Fib*Head,Fib*x,Fib*y){
}