Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions ForceNew.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#include <bits/stdc++.h>
using namespace std;

/* A linked list node */
struct Node {
int data;
struct Node* next;
};

// Utility function to create a new Node
struct Node* newNode(int data)
{
Node* temp = new Node;
temp->data = data;
temp->next = NULL;
return temp;
}
17 changes: 17 additions & 0 deletions JoitSector.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#include <bits/stdc++.h>
using namespace std;

/* A linked list node */
struct Node {
int data;
struct Node* next;
};

// Utility function to create a new Node
struct Node* newNode(int data)
{
Node* temp = new Node;
temp->data = data;
temp->next = NULL;
return temp;
}
17 changes: 17 additions & 0 deletions Linked List. cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#include <bits/stdc++.h>
using namespace std;

/* A linked list node */
struct Node {
int data;
struct Node* next;
};

// Utility function to create a new Node
struct Node* newNode(int data)
{
Node* temp = new Node;
temp->data = data;
temp->next = NULL;
return temp;
}
17 changes: 17 additions & 0 deletions Pkp.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#include <bits/stdc++.h>
using namespace std;

/* A linked list node */
struct Node {
int data;
struct Node* next;
};

// Utility function to create a new Node
struct Node* newNode(int data)
{
Node* temp = new Node;
temp->data = data;
temp->next = NULL;
return temp;
}
231 changes: 231 additions & 0 deletions QuadTree.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,231 @@
// C++ Implementation of Quad Tree
#include <iostream>
#include <cmath>
using namespace std;

// Used to hold details of a point
struct Point
{
int x;
int y;
Point(int _x, int _y)
{
x = _x;
y = _y;
}
Point()
{
x = 0;
y = 0;
}
};

// The objects that we want stored in the quadtree
struct Node
{
Point pos;
int data;
Node(Point _pos, int _data)
{
pos = _pos;
data = _data;
}
Node()
{
data = 0;
}
};

// The main quadtree class
class Quad
{
// Hold details of the boundary of this node
Point topLeft;
Point botRight;

// Contains details of node
Node *n;

// Children of this tree
Quad *topLeftTree;
Quad *topRightTree;
Quad *botLeftTree;
Quad *botRightTree;

public:
Quad()
{
topLeft = Point(0, 0);
botRight = Point(0, 0);
n = NULL;
topLeftTree = NULL;
topRightTree = NULL;
botLeftTree = NULL;
botRightTree = NULL;
}
Quad(Point topL, Point botR)
{
n = NULL;
topLeftTree = NULL;
topRightTree = NULL;
botLeftTree = NULL;
botRightTree = NULL;
topLeft = topL;
botRight = botR;
}
void insert(Node*);
Node* search(Point);
bool inBoundary(Point);
};

// Insert a node into the quadtree
void Quad::insert(Node *node)
{
if (node == NULL)
return;

// Current quad cannot contain it
if (!inBoundary(node->pos))
return;

// We are at a quad of unit area
// We cannot subdivide this quad further
if (abs(topLeft.x - botRight.x) <= 1 &&
abs(topLeft.y - botRight.y) <= 1)
{
if (n == NULL)
n = node;
return;
}

if ((topLeft.x + botRight.x) / 2 >= node->pos.x)
{
// Indicates topLeftTree
if ((topLeft.y + botRight.y) / 2 >= node->pos.y)
{
if (topLeftTree == NULL)
topLeftTree = new Quad(
Point(topLeft.x, topLeft.y),
Point((topLeft.x + botRight.x) / 2,
(topLeft.y + botRight.y) / 2));
topLeftTree->insert(node);
}

// Indicates botLeftTree
else
{
if (botLeftTree == NULL)
botLeftTree = new Quad(
Point(topLeft.x,
(topLeft.y + botRight.y) / 2),
Point((topLeft.x + botRight.x) / 2,
botRight.y));
botLeftTree->insert(node);
}
}
else
{
// Indicates topRightTree
if ((topLeft.y + botRight.y) / 2 >= node->pos.y)
{
if (topRightTree == NULL)
topRightTree = new Quad(
Point((topLeft.x + botRight.x) / 2,
topLeft.y),
Point(botRight.x,
(topLeft.y + botRight.y) / 2));
topRightTree->insert(node);
}

// Indicates botRightTree
else
{
if (botRightTree == NULL)
botRightTree = new Quad(
Point((topLeft.x + botRight.x) / 2,
(topLeft.y + botRight.y) / 2),
Point(botRight.x, botRight.y));
botRightTree->insert(node);
}
}
}

// Find a node in a quadtree
Node* Quad::search(Point p)
{
// Current quad cannot contain it
if (!inBoundary(p))
return NULL;

// We are at a quad of unit length
// We cannot subdivide this quad further
if (n != NULL)
return n;

if ((topLeft.x + botRight.x) / 2 >= p.x)
{
// Indicates topLeftTree
if ((topLeft.y + botRight.y) / 2 >= p.y)
{
if (topLeftTree == NULL)
return NULL;
return topLeftTree->search(p);
}

// Indicates botLeftTree
else
{
if (botLeftTree == NULL)
return NULL;
return botLeftTree->search(p);
}
}
else
{
// Indicates topRightTree
if ((topLeft.y + botRight.y) / 2 >= p.y)
{
if (topRightTree == NULL)
return NULL;
return topRightTree->search(p);
}

// Indicates botRightTree
else
{
if (botRightTree == NULL)
return NULL;
return botRightTree->search(p);
}
}
};

// Check if current quadtree contains the point
bool Quad::inBoundary(Point p)
{
return (p.x >= topLeft.x &&
p.x <= botRight.x &&
p.y >= topLeft.y &&
p.y <= botRight.y);
}

// Driver program
int main()
{
Quad center(Point(0, 0), Point(8, 8));
Node a(Point(1, 1), 1);
Node b(Point(2, 5), 2);
Node c(Point(7, 6), 3);
center.insert(&a);
center.insert(&b);
center.insert(&c);
cout << "Node a: " <<
center.search(Point(1, 1))->data << "\n";
cout << "Node b: " <<
center.search(Point(2, 5))->data << "\n";
cout << "Node c: " <<
center.search(Point(7, 6))->data << "\n";
cout << "Non-existing node: "
<< center.search(Point(5, 5));
return 0;
}
18 changes: 18 additions & 0 deletions Saurabh.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#include <bits/stdc++.h>
using namespace std;

/* A linked list node */
struct Node {
int data;
struct Node* next;
};

// Utility function to create a new Node
struct Node* newNode(int data)
{
Node* temp = new Node;
temp->data = data;
temp->next = NULL;
return temp;
cout<<"bshs";
}
17 changes: 17 additions & 0 deletions TowerOfHanooi. cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#include <bits/stdc++.h>
using namespace std;

/* A linked list node */
struct Node {
int data;
struct Node* next;
};

// Utility function to create a new Node
struct Node* newNode(int data)
{
Node* temp = new Node;
temp->data = data;
temp->next = NULL;
return temp;
}
17 changes: 17 additions & 0 deletions Tree. Cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#include <bits/stdc++.h>
using namespace std;

/* A linked list node */
struct Node {
int data;
struct Node* next;
};

// Utility function to create a new Node
struct Node* newNode(int data)
{
Node* temp = new Node;
temp->data = data;
temp->next = NULL;
return temp;
}
17 changes: 17 additions & 0 deletions Zerox.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#include <bits/stdc++.h>
using namespace std;

/* A linked list node */
struct Node {
int data;
struct Node* next;
};

// Utility function to create a new Node
struct Node* newNode(int data)
{
Node* temp = new Node;
temp->data = data;
temp->next = NULL;
return temp;
}
17 changes: 17 additions & 0 deletions kitucode.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#include <bits/stdc++.h>
using namespace std;

/* A linked list node */
struct Node {
int data;
struct Node* next;
};

// Utility function to create a new Node
struct Node* newNode(int data)
{
Node* temp = new Node;
temp->data = data;
temp->next = NULL;
return temp;
}