- What is data structure?
- What are the goals of data structure?
- What does abstract data type mean?
- What is the difference between a stack and an array?
- What do you mean by recursive definition?
- What is sequential search?
- What actions are performed when a function is called?
- What actions are performed when a function returns?
- What is a linked list?
- What are the advantages of linked list over array (static data structure)?
- We apply binary search algorithm to a sorted linked list why?
- What do you mean by free pool?
- What do you mean by garbage collection?
- What do you mean by overflow and underflow?
- What are the disadvantages array implementations of linked list?
- What is a queue?
- What is a priority queue?
- What are the disadvantages of sequential storage?
- What are the disadvantages of representing a stack or queue by a linked list?
- What is dangling pointer and how to avoid it?
- What are the disadvantages of linear list?
- Define circular list?
- What are the disadvantages of circular list?
- Define double linked list?
- Is it necessary to sort a file before searching a particular item ?
- What are the issues that hamper the efficiency in sorting a file?
- Calculate the efficiency of sequential search?
- Is any implicit arguments are passed to a function when it is called?
- Parenthesis is never required in postfix or prefix expressions and why?
- List out the areas in which data structures are applied extensively?
- What are the major data structures used in the following areas network data model and hierarchical data model?
- If you are using c language to implement the heterogeneous linked list and what pointer type will you use?
- Minimum number of queues needed to implement the priority queue?
- What is the data structures used to perform recursion?
- What are the notations used in evaluation of arithmetic expressions using prefix and postfix forms?
- List out few of the application of tree data structure?
- List out few of the applications that make use of multilinked structures?
- What is the type of the algorithm used in solving the 8 queens problem?
- In an avl tree, at what condition the balancing is to be done?
- In rdbms what is the efficient data structure used in the internal storage representation?
- What is a spanning tree?
- Does the minimal spanning tree of a graph give the shortest distance between any 2 specified nodes?
- Difference between calloc and malloc?
- Which file contains the definition of member functions?
- How is any data structure application is classified among files?
- What member function places a new node at the end of the linked list?
- What is linked list?
- What does each entry in the link list called?
- How is the front of the queue calculated?
- Which process places data at the back of the queue?
- What is the relationship between a queue and its underlying array?
- What is a queue?
- What does isempty member method determines?
- ## what method is used to place a value onto the top of a stack?
- Run time memory allocation is known as?
- How do you assign an address to an element of a pointer array?
- Why do we use a multidimensional array?
- Is pointer a variable?
- How many parts are there in a declaration statement?
- What is impact of signed numbers on the memory?
- What is precision?
- What is the difference between null and void pointer?
- What is the difference between array and stack?
- Tell how to check whether a linked list is circular?
- Whether linked list is linear or non-linear data structure?
- If you are using c language to implement the heterogeneous linked list and what pointer type will you use?
- What is a node class?
- When can you tell that a memory leak will occur?
- How many trees are possible with 10 nodes?
- How can i search for data in a linked list?
- Define data structures?
- Define primary data structures?
- Define static data structures?
- Define dynamic data structures?
- List some dynamic data structures in c?
- Define linear data structures?
- Define non-linear data structures?
- Define linked lists?
- State the different types of linked lists?
- List the basic operations carried out in a linked list?
- List out the advantages of using a linked list?
- List out the disadvantages of using a linked list?
- List out the applications of a linked list?
- Define a stack?
- List out the basic operations that can be performed on a stack?
- State the different ways of representing expressions?
- State the advantages of using infix notations?
- State the advantages of using postfix notations?
- State the rules to be followed during infix to postfix conversions?
- State the rules to be followed during infix to prefix conversions?
- State the difference between stacks and linked lists?
- Mention the advantages of representing stacks using linked lists than arrays?
- Define a queue?
- Define a priority queue?
- State the difference between queues and linked lists?
- Define a deque?
- Why you need a data structure?
- What do you mean by shortest path?
- What do you mean by articulation point?
- Define biconnectivity?
- What do you mean by back edge?
- What do you mean by tree edge?
- What do you mean by breadth first search?
- List the two important key points of depth first search?
- Define graph traversals?
- Name two algorithms two find minimum spanning tree?
- What is a minimum spanning tree?
- What are the two traversal strategies used in traversing a graph?
- When is a graph said to be weakly connected?
- What is meant by strongly connected in a graph?
- What is an acyclic graph?
- What is a cycle or a circuit?
- What is a simple path?
- Define path in a graph?
- Define indegree of a graph?
- Define outdegree of a graph?
- What is a weighted graph?
- What is a simple graph?
- What is a loop?
- What is undirected graph?
- What is a directed graph?
- Define adjacent nodes?
- Define graph?
- What is the need for path compression?
- What do you mean by union by weight?
- List the abstract operations in the set?
- Define a set?
- What do you mean by disjoint set adt?
- List the applications of set adt?
- Define an equivalence relation?
- Define a relation?
- Mention one advantage and disadvantage of using quadratic probing?
- List the limitations of linear probing?
- What is the need for extendable hashing?
- What do you mean by rehashing?
- What do you mean by double hashing?
- What do you mean by secondary clustering?
- What do you mean by quadratic probing?
- What do you mean by primary clustering?
- What do you mean by linear probing?
- What do you mean by probing?
- What are the types of collision resolution strategies in open addressing?
- What do you mean by open addressing?
- Write the disadvantages of separate chaining?
- Write the advantage of separate chaining?
- What do you mean by separate chaining?
- What are the collision resolution methods?
- What do you mean by collision in hashing?
- Write the importance of hashing?
- What do you mean by hash function?
- What do you mean by hash table?
- Define hashing?
- What do you mean by the term percolate down?
- What do you mean by the term percolate up?
- What are the applications of priority queues?
- What do you mean by heap order property?
- What do you mean by structure property in a heap?
- What are the properties of binary heap?
- What is the need for priority queue?
- What are the applications of b-tree?
- What do you mean by 2-3-4 tree?
- What do you mean by 2-3 tree?
- Define b tree of order m?
- What is the minimum number of nodes in an avl tree of height h?
- Define heap?
- List the types of rotations available in splay tree?
- What is the idea behind splaying?
- Define splay tree?
- What do you mean by balance factor of a node in avl tree?
- What are the categories of avl rotations?
- What do you mean by balanced trees?
- Define avl tree?
- Define left in threaded tree?
- Define right in threaded tree?
- What is an expression tree?
- What is the use of threaded binary tree?
- Why it is said that searching a node in a binary search tree is efficient than that of a simple binary tree?
- Define ancestor and descendant?
- What do you mean by general trees?
- Define a binary search tree?
- State the demerits of linked representation of binary trees?
- State the merit of linked representation of binary trees?
- State the demerit of linear representation of binary trees?
- State the merits of linear representation of binary trees?
- What are the tasks performed during postorder traversal?
- What are the tasks performed during inorder traversal?
- What are the tasks performed during preorder traversal?
- What are the tasks performed while traversing a binary tree?
- What are the different binary tree traversal techniques?
- What is meant by binary tree traversal?
- State the properties of a binary tree?
- Define a right-skewed binary tree?
- Define a complete binary tree?
- Define a full binary tree ?
- Define non-terminal nodes in a tree?
- Define terminal nodes in a tree?
- Define a path in a tree?
- Define a binary tree?
- Define forest?
- What do you mean by level of the tree?
- Define depth and height of a tree?
- Define depth and height of a node?
- Define parent node?
- Define internal nodes?
- Define leaves?
- Define degree of the node?
- Define root?
- Define a tree?
- Why we need cursor implementation of linked lists?
- List the applications of queues?
- List the applications of stacks?
- What are the types of queues?
- What are the objectives of studying data structures?
- State the difference between persistent and ephemeral data structure?
- State the difference between primitive and non-primitive data types?
- What are the advantages of modularity?
- Define an abstract data type?
- Define data type and what are the types of data type?
- Difference between abstract data type and data type and data structure?
- State the difference between queues and linked lists?
A data structure is a way of organizing data that considers not only the items stored, but also their relationship to each other. Advance knowledge about the relationship between data items allows designing of efficient algorithms for the manipulation of data.
It must rich enough in structure to reflect the actual relationship of data in real world. The structure should be simple enough for efficient processing of data.
Data type is a collection of values and a set of operations on these values. Abstract data type refer to the mathematical concept that define the data type. It is a useful tool for specifying the logical properties of a data type. ADT consists of two parts
- Values definition
- Operation definition Example:-The value definition for the ADT RATIONAL states that RATIONAL value consists of two integers, second doesnt equal to zero. The operator definition for ADT RATIONAL includes the operation of creation (make rational) addition, multiplication and test for equality.
STACK: i) Stack is a ordered collection of items. ii) Stack is a dynamic object whose size is constantly changing as items are pushed and popped. iii) Stack may contain different data types. iv) Stack is declared as a structure containing an array to hold the element of the stack, and an integer to indicate the current stack top within the array. ARRAY: i) Array is an ordered collection of items. ii) Array is a static object i.e. no of item is fixed and is assigned by the declaration of the array. iii) It contains same data types. iv) Array can be home of a stack i.e. array can be declared large enough for maximum size of the stack.
The definition which defines an object in terms of simpler cases of itself is called recursive definition.
In sequential search each item in the array is compared with the item being searched until a match occurs. It is applicable to a table organized either as an array or as a linked list.
When a function is called i) arguments are passed. ii) local variables are allocated and initialized. ii) transferring control to the function.
i) Return address is retrieved. ii) Functions data area is freed. iii) Branch is taken to the return address.
A linked list is a linear collection of data elements, called nodes, where the linear order is given by pointers. Each node has two parts first part contain the information of the element second part contains the address of the next node in the list.
The disadvantages of array are: i) unlike linked list it is expensive to insert and delete elements in the array. ii) One cant double or triple the size of array as it occupies block of memory space. In linked list i) each element in list contains a field, called a link or pointer which contains the address of the next element. ii) Successive elements need not occupy adjacent space in memory.
No we cannot apply binary search algorithm to a sorted linked list, since there is no way of indexing the middle element in the list. This is the drawback in using linked list as a data structure.
Pool is a list consisting of unused memory cells which has its own pointer.
It is a technique in which the operating system periodically collects all the deleted space onto the free storage list. It takes place when there is minimum amount of space left in storage list or when CPU is ideal. The alternate method to this is to immediately reinsert the space into free storage list which is time consuming.
When new data is to be inserted into the data structure but there is no available space i.e. free storage list is empty this situation is called overflow. When we want to delete data from a data structure that is empty this situation is called underflow.
i) The no of nodes needed cant be predicted when the program is written. ii) The no of nodes declared must remain allocated throughout its execution.
A queue is an ordered collection of items from which items may be deleted at one end (front end) and items inserted at the other end (rear end). It obeys FIFO rule there is no limit to the number of elements a queue contains.
The priority queue is a data structure in which the intrinsic ordering of the elements (numeric or alphabetic) Determines the result of its basic operation. It is of two types: i) Ascending priority queue- Here smallest item can be removed (insertion is arbitrary). ii) Descending priority queue- Here largest item can be removed (insertion is arbitrary).
i) Fixed amount of storage remains allocated to the data structure even if it contains less element. ii) No more than fixed amount of storage is allocated causing overflow.
i) A node in a linked list (info and next field) occupies more storage than a corresponding element in an array. ii) Additional time spent in managing the available list. Object Oriented Analysis and Design Tutorial
After a call to free(p) makes a subsequent reference to *p illegal, i.e. though the storage to p is freed but the value of p(address) remain unchanged .so the object at that address may be used as the value of *p (i.e. there is no way to detect the illegality).Here p is called dangling pointer. To avoid this it is better to set p to NULL after executing free(p).The null pointer value doesnt reference a storage location it is a pointer that doesnt point to anything.
i) We cannot reach any of the nodes that precede node (p). ii) If a list is traversed, the external pointer to the list must be persevered in order to reference the list again.
In linear list the next field of the last node contain a null pointer, when a next field in the last node contain a pointer back to the first node it is called circular list. Advantages – From any point in the list it is possible to reach at any other point.
i) We cant traverse the list backward. ii) If a pointer to a node is given we cannot delete the node. Computer architecture Interview Questions
It is a collection of data elements called nodes, where each node is divided into three parts: An info field that contains the information stored in the node. Left field that contain pointer to node on left side. Right field that contain pointer to node on right side. Adv Java Interview Questions
If less work is involved in searching a element than to sort and then extract, then we dont go for sort. If frequent use of the file is required for the purpose of retrieving specific element, it is more efficient to sort the file. Thus it depends on situation.
The issues are: Length of time required by the programmer in coding a particular sorting program. Amount of machine time necessary for running the particular program. The amount of space necessary for the particular program . Object Oriented Analysis and Design Interview Questions
The number of comparisons depends on where the record with the argument key appears in the table.
Yes there is a set of implicit arguments that contain information necessary for the function to execute and return correctly. One of them is return address which is stored within the functions data area, at the time of returning to calling program the address is retrieved and the function branches to that location.
Parenthesis is not required because the order of the operators in the postfix /prefix expressions determines the actual order of operations in evaluating the expression.
Compiler Design, Operating System, Database Management System, Statistical analysis package, Numerical Analysis, Graphics, Artificial Intelligence, Simulation.
What are the major data structures used in the following areas network data model and hierarchical data model?
RDBMS – Array (i.e. Array of structures) Network data model – Graph Hierarchical data model – Trees
If you are using c language to implement the heterogeneous linked list and what pointer type will you use?
The heterogeneous linked list contains different data types in its nodes and we need a link, pointer to connect them. It is not possible to use ordinary pointers for this. So we go for void pointer. Void pointer is capable of storing pointer to any type as it is a generic pointer type.
Two. One queue is used for actual storing of data and another for storing priorities.
Stack. Because of its LIFO (Last In First Out) property it remembers its caller so knows whom to return when the function has to return. Recursion makes use of system stack for storing the return addresses of the function calls. Every recursive function has its equivalent iterative (non-recursive) function. Even when such equivalent iterative procedures are written, explicit stack is to be used.
Polish and Reverse Polish notations.
The manipulation of Arithmetic expression, Symbol Table construction & Syntax analysis.
Sparse matrix, Index generation.
Backtracking.
If the pivotal value (or the Height factor) is greater than 1 or less than –1.
B+ tree. Because in B+ tree, all the data is stored only in leaf nodes, that makes searching easier. This corresponds to the records that shall be stored in leaf nodes.
A spanning tree is a tree associated with a network. All the nodes of the graph appear on the tree once. A minimum spanning tree is a spanning tree organized so that the total edge weight between nodes is minimized.
No! Minimal spanning tree assures that the total weight of the tree is kept at its minimum. But it doesnt mean that the distance between any two nodes involved in the minimal-spanning tree is minimum.
malloc: allocate n bytes. calloc: allocate m times n bytes initialized to 0.
Definitions of member functions for the Linked List class are contained in the LinkedList.cpp file.
A linked list application can be organized into a header file, source file and main application file. The first file is the header file that contains the definition of the NODE structure and the LinkedList class definition. The second file is a source code file containing the implementation of member functions of the LinkedList class. The last file is the application file that contains code that creates and uses the LinkedList class.
The appendNode() member function places a new node at the end of the linked list. The appendNode() requires an integer representing the current data of the node.
Linked List is one of the fundamental data structures. It consists of a sequence of ? nodes, each containing arbitrary data fields and one or two (”links”) pointing to the next and/or previous nodes. A linked list is a self-referential datatype because it contains a pointer or link to another data of the same type. Linked lists permit insertion and removal of nodes at any point in the list in constant time, but do not allow random access.
Each entry in a linked list is called a node. Think of a node as an entry that has three sub entries. One sub entry contains the data, which may be one attribute or many attributes. Another points to the previous node, and the last points to the next node. When you enter a new item on a linked list, you allocate the new node and then set the pointers to previous and next nodes.
The front of the queue is calculated by front = (front+1) % size.
Enqueue is the process that places data at the back of the queue.
Data stored in a queue is actually stored in an array. Two indexes, front and end will be used to identify the start and end of the queue. When an element is removed front will be incremented by 1. In case it reaches past the last index available it will be reset to 0. Then it will be checked with end. If it is greater than end queue is empty. When an element is added end will be incremented by 1. In case it reaches past the last index available it will be reset to 0. After incrementing it will be checked with front. If they are equal queue is full.
A Queue is a sequential organization of data. A queue is a first in first out type of data structure. An element is inserted at the last position and an element is always taken out from the first position.
isEmpty() checks if the stack has at least one element. This method is called by Pop() before retrieving and returning the top element.
push() method, Push is the direction that data is being added to the stack. push() member method places a value onto the top of a stack.
Allocating memory at runtime is called a dynamically allocating memory. In this, you dynamically allocate memory by using the new operator when declaring the array.
for example : int grades[] = new int[10];
We can assign a memory address to an element of a pointer array by using the address operator, which is the ampersand (&), in an assignment statement such as ptemployee[0] = &projects[2];
A multidimensional array can be useful to organize subgroups of data within an array. In addition to organizing data stored in elements of an array, a multidimensional array can store memory addresses of data in a pointer array and an array of pointers. Multidimensional arrays are used to store information in a matrix form. e.g; a railway timetable, schedule cannot be stored as a single dimensional array. One can use a 3-D array for storing height, width and length of each room on each floor of a building.
Yes, a pointer is a variable and can be used as an element of a structure and as an attribute of a class in some programming languages such as C++, but not Java. However, the contents of a pointer is a memory address of another location of memory, which is usually the memory address of another variable, element of a structure, or attribute of a class.
There are two main parts, variable identifier and data type and the third type is optional which is type qualifier like signed/unsigned.
Sign of the number is the first bit of the storage allocated for that number. So you get one bit less for storing the number. For example if you are storing an 8-bit number, without sign, the range is 0-255. If you decide to store sign you get 7 bits for the number plus one bit for the sign. So the range is -128 to +127.
Precision refers the accuracy of the decimal portion of a value. Precision is the number of digits allowed after the decimal point.
NULL can be value for pointer type variables. VOID is a type identifier which has not size. NULL and void are not same. Example: void* ptr = NULL;
STACK follows LIFO. Thus the item that is first entered would be the last removed. In array the items can be entered or removed in any order. Basically each member access is done using index. No strict order is to be followed here to remove a particular element. Array may be multidiamensional or onediamensional but stack should be onediamensional. but both are linear data structure.
Create two pointers, each set to the start of the list. Update each as follows:
while (pointer1) { pointer1 = pointer1->next; pointer2 = pointer2->next; if(pointer2)pointer2=pointer2->next; if (pointer1 == pointer2) { print (”circularn”); } }
According to Access strategies Linked list is a linear one. According to Storage Linked List is a Non-linear one.
If you are using c language to implement the heterogeneous linked list and what pointer type will you use?
The heterogeneous linked list contains different data types in its nodes and we need a link, pointer to connect them. It is not possible to use ordinary pointers for this. So we go for void pointer. Void pointer is capable of storing pointer to any type as it is a generic pointer type.
A node class is a class that, relies on the base class for services and implementation, provides a wider interface to users than its base class, relies primarily on virtual functions in its public interface depends on all its direct and indirect base class can be understood only in the context of the base class can be used as base for further derivation can be used to create objects. A node class is a class that has added new services or functionality beyond the services inherited from its base class.
A memory leak occurs when a program loses the ability to free a block of dynamically allocated memory.
1014 - For example, consider a tree with 3 nodes(n=3), it will have the maximum combination of 5 different (ie, 23 - 3 =? 5) trees.
Unfortunately, the only way to search a linked list is with a linear search, because the only way a linked list is members can be accessed is sequentially. Sometimes it is quicker to take the data from a linked list and store it in a different data structure so that searches can be more efficient.
Data Structures is defined as the way of organizing all data items that consider not only the elements stored but also stores the relationship between the elements.
Primary data structures are the basic data structures that directly operate upon the machine instructions. All the basic constants (integers, floating-point numbers, character constants, string constants) and pointers are considered as primary data structures.
A data structure formed when the number of data items are known in advance is referred as static data structure or fixed size data structure.
A data structure formed when the number of data items are not known in advance is known as dynamic data structure or variable size data structure.
Some dynamic data structures in C are linked lists, stacks, queues, trees etc.
Linear data structures are data structures having a linear relationship between its adjacent elements. Eg; Linked lists.
Non-linear data structures are data structures that dont have a linear relationship between its adjacent elements but have a hierarchical relationship between the elements. Eg; Trees and Graphs.
Linked list consists of a series of structures, which are not necessarily adjacent in memory. Each structure contains the element and a pointer to a structure containing its successor. We call this the Next Pointer. The last cells Next pointer points to NULL.
The different types of linked list include singly linked list, doubly linked list and circular linked list.
The basic operations carried out in a linked list include: Creation of a list. Insertion of a node. Deletion of a node. Modification of a node. Traversal of the list.
It is not necessary to specify the number of elements in a linked list during its declaration. Linked list can grow and shrink in size depending upon the insertion and deletion that occurs in the list. Insertions and deletions at any place in a list can be handled easily and efficiently. A linked list does not waste any memory space.
Searching a particular element in a list is difficult and time consuming. A linked list will use more storage space than an array to store the same number of elements.
Some important applications of linked lists are manipulation of polynomials, sparse matrices, stacks and queues.
Stack is an ordered collection of elements in which insertions and deletions are restricted to one end. The end from which elements are added and/or removed is referred to as top of the stack. Stacks are also referred as piles, push-down lists and last-in-first-out (LIFO) lists.
The basic operations that can be performed on a stack are Push operation. Pop operation. Peek operation. Empty check. Fully occupied check.
The different ways of representing expressions are Infix Notation. Prefix Notation. Postfix Notation.
It is the mathematical way of representing the expression. It is easier to see visually which operation is done from first to last.
Need not worry about the rules of precedence. Need not worry about the rules for right to left associativity. Need not need parenthesis to override the above rules.
Fully parenthesize the expression starting from left to right. During parenthesizing, the operators having higher precedence are first parenthesized. Move the operators one by one to their right, such that each operator replaces their corresponding right parenthesis. The part of the expression, which has been converted into postfix is to be treated as single operand. Once the expression is converted into postfix form, remove all parenthesis.
Fully parenthesize the expression starting from left to right. During parenthesizing, the operators having higher precedence are first parenthesized. Move the operators one by one to their left, such that each operator replaces their corresponding left parenthesis. The part of the expression, which has been converted into prefix is to be treated as single operand. Once the expression is converted into prefix form, remove all parenthesis.
The difference between stacks and linked lists is that insertions and deletions may occur anywhere in a linked list, but only at the top of the stack.
It is not necessary to specify the number of elements to be stored in a stack during its declaration, since memory is allocated dynamically at run time when an element is added to the stack. Insertions and deletions can be handled easily and efficiently. Linked list representation of stacks can grow and shrink in size without wasting memory space, depending upon the insertion and deletion that occurs in the list. Multiple stacks can be represented efficiently using a chain for each stack.
Queue is an ordered collection of elements in which insertions are restricted to one end called the rear end and deletions are restricted to other end called the front end. Queues are also referred as First-In-First-Out (FIFO) Lists.
Priority queue is a collection of elements, each containing a key referred as the priority for that element. Elements can be inserted in any order (i.e., of alternating priority), but are arranged in order of their priority value in the queue. The elements are deleted from the queue in the order of their priority (i.e., the elements with the highest priority is deleted first). The elements with the same priority are given equal importance and processed accordingly.
The difference between queues and linked lists is that insertions and deletions may occur anywhere in the linked list, but in queues insertions can be made only in the rear end and deletions can be made only in the front end.
Deque (Double-Ended Queue) is another form of a queue in which insertions and deletions are made at both the front and rear ends of the queue. There are two variations of a deque, namely, input restricted deque and output restricted deque. The input restricted deque allows insertion at one end (it can be either front or rear) only. The output restricted deque allows deletion at one end (it can be either front or rear) only.
A data structure helps you to understand the relationship of one data element with the other and organize it within the memory. Sometimes the organization might be simple and can be very clearly visioned. Eg; List of names of months in a year –Linear Data Structure, List of historical places in the world- Non-Linear Data Structure. A data structure helps you to analyze the data, store it and organize it in a logical and mathematical manner.
A path having minimum weight between two vertices is known as shortest path, in which weight is always a positive number.
If a graph is not biconnected, the vertices whose removal would disconnect the graph are known as articulation points.
A connected graph G is said to be biconnected, if it remains connected after removal of any one vertex and the edges that are incident upon that vertex. A connected graph is biconnected, if it has no articulation points.
If w is the ancestor of v, then vw is called a back edge.
If w is undiscovered at the time vw is explored, then vw is called a tree edge and v becomes the parent of w.
BFS performs simultaneous explorations starting from a common point and spreading out independently.
i) If path exists from one node to another node, walk across the edge – exploring the edge. ii) If path does not exist from one specific node to any other node, return to the previous node where we have been before – backtracking.
Traversing a graph is an efficient way to visit each vertex and edge exactly once.
Kruskals algorithm. Prims algorithm.
A minimum spanning tree of an undirected graph G is a tree formed from graph edges that connects all the vertices of G at the lowest total cost.
Breadth first search Depth first search
When a directed graph is not strongly connected but the underlying graph is connected, then the graph is said to be weakly connected.
An undirected graph is connected, if there is a path from every vertex to every other vertex. A directed graph with this property is called strongly connected.
A simple diagram which does not have any cycles is called an acyclic graph.
A path which originates and ends in the same node is called a cycle or circuit.
A path in a diagram in which the edges are distinct is called a simple path. It is also called as edge simple.
The path in a graph is the route taken to reach terminal node from a starting node.
In a directed graph, for any node v, the number of edges which have v as their terminal node is called the indegree of the node v.
In a directed graph, for any node v, the number of edges which have v as their initial node is called the out degree of the node v.
A graph in which weights are assigned to every edge is called a weighted graph.
A simple graph is a graph, which has not more than one edge between a pair of nodes than such a graph is called a simple graph.
An edge of a graph which connects to itself is called a loop or sling.
A graph in which every edge is undirected is called a directed graph.
A graph in which every edge is directed is called a directed graph.
Any two nodes which are connected by an edge in a graph are called adjacent nodes. For example, if an edge x ε E is associated with a pair of nodes (u,v) where u, v ε V, then we say that the edge x connects the nodes u and v.
A graph G consist of a nonempty set V which is a set of nodes of the graph, a set E which is the set of edges of the graph, and a mapping from the set for edge E to a set of pairs of elements of V. It can also be represented as G=(V, E).
Path compression is performed during a Find operation. Suppose if we want to perform Find(X), then the effect of path compression is that every node on the path from X to the root has its parent changed to the root.
Keep track of the weight ie; size of each tree and always append the smaller tree to the larger one when performing UNION.
Let S and T be sets and e be an element. SINGLETON(e) returns {e}. UNION(S,T) returns S Ụ T. INTERSECTION(S,T) returns S ∩ T. FIND returns the name of the set containing a given element.
A set S is an unordered collection of elements from a universe. An element cannot appear more than once in S. The cardinality of S is the number of elements in S. An empty set is a set whose cardinality is zero. A singleton set is a set whose cardinality is one.
A collection of non-empty disjoint sets S=S1,S2,….,Sk i.e;each Si is a non-empty set that has no element in common with any other Sj. In mathematical notation this is: Si∩Sj=Ф. Each set is identified by a unique element called its representative.
Maintaining a set of connected components of a graph. Maintain list of duplicate copies of web pages. Constructing a minimum spanning tree for a graph.
An equivalence relation is a relation R that satisfies three properties: (Reflexive) aRa, for all a ε S. (Symmetric) aRb if and only if bRa. (Transitive) aRb and bRc implies that aRc.
A relation R is defined on a set S if for every pair of elements (a,b), a,b ε S, aRb is either true or false. If aRb is true, then we say that a is related to b.
Advantage: The problem of primary clustering is eliminated. Disadvantage: There is no guarantee of finding an unoccupied cell once the table is nearly half full.
Time taken for finding the next available cell is large. In linear probing, we come across a problem known as clustering.
If either open addressing hashing or separate chaining hashing is used, the major problem is that collisions could cause several blocks to be examined during a Find, even for a well-distributed hash table. Extendible hashing allows a find to be performed in two disk accesses. Insertions also require few disk accesses.
If the table gets too full, the running time for the operations will start taking too long and inserts might fail for open addressing with quadratic resolution. A solution to this is to build another table that is about twice as big with the associated new hash function and scan down the entire original hash table, computing the new hash value for each element and inserting it in the new table. This entire operation is called rehashing.
Double hashing is an open addressing collision resolution strategy in which F(i)=i.hash2(X). This formula says that we apply a second hash function to X and probe at a distance hash2(X), 2hash2(X),….,and so on. A function such as hash2(X)=R-(XmodR), with R a prime smaller than Tablesize.
Although quadratic probing eliminates primary clustering, elements that hash to the same position will probe the same alternative cells. This is known as secondary clustering.
Quadratic probing is an open addressing collision resolution strategy in which F(i)=i2. There is no guarantee of finding an empty cell once the table gets half full if the table size is not prime. This is because at most half of the table can be used as alternative locations to resolve collisions.
In linear probing collision resolution strategy, even if the table is relatively empty, blocks of occupied cells start forming. This effect is known as primary clustering means that any key hashes into the cluster will require several attempts to resolve the collision and then it will add to the cluster.
Linear probing is an open addressing collision resolution strategy in which F is a linear function of i, F(i)=i. This amounts to trying sequentially in search of an empty cell. If the table is big enough, a free cell can always be found, but the time to do so can get quite large.
Probing is the process of getting next available hash table array cell.
Linear probing. Quadratic probing. Double hashing.
Open addressing is a collision resolving strategy in which, if collision occurs alternative cells are tried until an empty cell is found. The cells h0(x), h1(x), h2(x),…. are tried in succession, where hi(x)=(Hash(x)+F(i))mod Tablesize with F(0)=0. The function F is the collision resolution strategy.
The elements are evenly distributed. Some elements may have more elements and some may not have anything. It requires pointers. This leads to slow the algorithm down a bit because of the time required to allocate new cells, and also essentially requires the implementation of a second data structure.
Number of elements can be inserted as it uses linked lists.
Separate chaining is a collision resolution technique to keep the list of all elements that hash to the same value. This is called separate chaining because each hash table element is a separate chain (linked list). Each linked list contains all the elements whose keys hash to the same index.
Separate chaining or External hashing. Open addressing or Closed hashing.
When an element is inserted, it hashes to the same value as an already inserted element, and then it produces collision.
Maps key with the corresponding value using hash function. Hash tables support the efficient addition of new entries and the time spent on searching for the required data is independent of the number of items stored.
A hash function is a key to address transformation which acts upon a given key to compute the relative position of the key in an array. The choice of hash function should be simple and it must distribute the data evenly. A simple hash function is hash_key=key mod tablesize.
The hash table data structure is merely an array of some fixed size, containing the keys. A key is a string with an associated value. Each key is mapped into some number in the range 0 to tablesize-1 and placed in the appropriate cell.
Hashing is the transformation of string of characters into a usually shorter fixed length value or key that represents the original string. Hashing is used to index and retrieve items in a database because it is faster to find the item using the short hashed key than to find it using the original value.
When the minimum element is removed, a hole is created at the root. Since the heap now becomes one smaller, it follows that the last element X in the heap must move somewhere in the heap. If X can be placed in the hole, then we are done.. This is unlikely, so we slide the smaller of the holes children into the hole, thus pushing the hole down one level. We repeat this step until X can be placed in the hole. Thus, our action is to place X in its correct spot along a path from the root containing minimum children. This general strategy is known as percolate down.
To insert an element, we have to create a hole in the next available heap location. Inserting an element in the hole would sometimes violate the heap order property, so we have to slide down the parent into the hole. This strategy is continued until the correct location for the new element is found. This general strategy is known as a percolate up; the new element is percolated up the heap until the correct location is found.
The selection problem. Event simulation.
In a heap, for every node X, the key in the parent of X is smaller than (or equal to) the key in X, with the exception of the root (which has no parent).
A heap is a binary tree that is completely filled with the possible exception at the bottom level, which is filled from left to right. Such a tree is known as a complete binary tree.
Structure Property. Heap Order Property.
In a multiuser environment, the operating system scheduler must decide which of the several processes to run only for a fixed period of time. One algorithm uses queue. Jobs are initially placed at the end of the queue. The scheduler will repeatedly take the first job on the queue, run it until either it finishes or its time limit is up and place it at the end of the queue if it does not finish. This strategy is not appropriate, because very short jobs will soon to take a long time because of the wait involved in the run. Generally, it is important that short jobs finish as fast as possible, so these jobs should have precedence over jobs that have already been running. Further more, some jobs that are not short are still very important and should have precedence. This particular application seems to require a special kind of queue, known as priority queue. Priority queue is also called as Heap or Binary Heap.
Database implementation. Indexing on non-primary key fields.
A B-tree of order 4 is called 2-3-4 tree. A B-tree of order 4 is a tree that is not binary with the following structural properties: The root is either a leaf or has between 2 and 4 children. All non-leaf nodes (except the root) have between 2 and 4 children. All leaves are at the same depth.
A B-tree of order 3 is called 2-3 tree. A B-tree of order 3 is a tree that is not binary with the following structural properties: The root is either a leaf or has between 2 and 3 children. All non-leaf nodes (except the root) have between 2 and 3 children. All leaves are at the same depth.
A B-tree of order M is a tree that is not binary with the following structural properties: The root is either a leaf or has between 2 and M children. All non-leaf nodes (except the root) have between [M/2] and M children. All leaves are at the same depth.
The minimum number of nodes S(h), in an AVL tree of height h is given by S(h)=S(h-1)+S(h-2)+1. For h=0, S(h)=1.
A heap is defined to be a complete binary tree with the property that the value of each node is atleast as small as the value of its child nodes, if they exist. The root node of the heap has the smallest value in the tree.
Let us assume that the splay is performed at vertex v, whose parent and grandparent are p and g respectively. Then, the three rotations are named as: Zig: If p is the root and v is the left child of p, then left-left rotation at p would suffice. This case always terminates the splay as v reaches the root after this rotation. Zig-Zig: If p is not the root, p is the left child and v is also a left child, then a left-left rotation at g followed by a left-left rotation at p, brings v as an ancestor of g as well as p. Zig-Zag: If p is not the root, p is the left child and v is a right child, perform a left-right rotation at g and bring v as an ancestor of p as well as g.
Splaying reduces the total accessing time if the most frequently accessed node is moved towards the root. It does not require to maintain any information regarding the height or balance factor and hence saves space and simplifies the code to some extent.
A splay tree is a binary search tree in which restructuring is done using a scheme called splay. The splay is a heuristic method which moves a given vertex v to the root of the splay tree using a sequence of rotations.
The height of left subtree minus height of right subtree is called balance factor of a node in AVL tree.The balance factor may be either 0 or +1 or -1.The height of an empty tree is -1.
Let A be the nearest ancestor of the newly inserted nod which has the balancing factor ±2. Then the rotations can be classified into the following four categories: Left-Left: The newly inserted node is in the left subtree of the left child of A. Right-Right: The newly inserted node is in the right subtree of the right child of A. Left-Right: The newly inserted node is in the right subtree of the left child of A. Right-Left: The newly inserted node is in the left subtree of the right child of A.
Balanced trees have the structure of binary trees and obey binary search tree properties. Apart from these properties, they have some special constraints, which differ from one data structure to another. However, these constraints are aimed only at reducing the height of the tree, because this factor determines the time complexity. Eg: AVL trees, Splay trees.
An empty tree is height balanced. If T is a non-empty binary tree with TL and TR as its left and right subtrees, then T is height balanced if TL and TR are height balanced and │hL - hR│≤ 1 Where hL and hR are the heights of TL and TR respectively.
Left-in threaded binary tree is defined as one in which each NULL pointers is altered to contain a thread to that nodes inorder predecessor.
Right-in threaded binary tree is defined as one in which threads replace NULL pointers in nodes with empty right sub-trees.
An expression tree is a tree which is build from infix or prefix or postfix expression. Generally, in such a tree, the leaves are operands and other nodes are operators.
In threaded binary tree, the NULL pointers are replaced by some addresses. The left pointer of the node points to its predecessor and the right pointer of the node points to its successor.
Why it is said that searching a node in a binary search tree is efficient than that of a simple binary tree?
In binary search tree, the nodes are arranged in such a way that the left node is having less data value than root node value and the right nodes are having larger value than that of root. Because of this while searching any node the value of the target node will be compared with the parent node and accordingly either left sub branch or right sub branch will be searched. So, one has to compare only particular branches. Thus searching becomes efficient.
If there is a path from node n1 to n2, then n1 is the ancestor of n2 and n2 is the descendant of n1.
General tree is a tree with nodes having any number of children.
A binary search tree is a special binary tree, which is either empty or it should satisfy the following characteristics: Every node has a value and no two nodes should have the same value i.e) the values in the binary search tree are distinct. The values in any left sub-tree is less than the value of its parent node. The values in any right sub-tree is greater than the value of its parent node. The left and right sub-trees of each node are again binary search trees.
Given a node structure, it is difficult to determine its parent node. Memory spaces are wasted for storing null pointers for the nodes, which have one or no sub-trees. It requires dynamic memory allocation, which is not possible in some programming language.
Insertions and deletions in a node involve no data movement except the rearrangement of pointers, hence less processing time.
Insertions and deletions in a node take an excessive amount of processing time due to data movement up and down the array.
Storage method is easy and can be easily implemented in arrays. When the location of a parent/child node is known, other one can be determined easily. It requires static memory allocation so it is easily implemented in all programming language.
Traverse the left sub-tree. Traverse the right sub-tree. Process the root node.
Traverse the left sub-tree. Process the root node. Traverse the right sub-tree.
Process the root node. Traverse the left sub-tree. Traverse the right sub-tree.
Visiting a node. Traverse the left sub-tree. Traverse the right sub-tree.
Preorder traversal. Inorder traversal. Postorder traversal. Levelorder traversal.
Traversing a binary tree means moving through all the nodes in the binary tree, visiting each node in the tree only once.
The maximum number of nodes on level n of a binary tree is 2n-1, where n≥1. The maximum number of nodes in a binary tree of height n is 2n-1, where n≥1. For any non-empty tree, nl=nd+1 where nl is the number of leaf nodes and nd is the number of nodes of degree 2.
A right-skewed binary tree is a tree, which has only right child nodes.
A complete binary tree is a tree in which every non-leaf node has exactly two children not necessarily to be on the same level.
A full binary tree is a tree in which all the leaves are on the same level and every non-leaf node has exactly two children.
All intermediate nodes that traverse the given tree from its root node to the terminal nodes are referred as non-terminal nodes.
A node that has no children is called a terminal node. It is also referred to as leaf node.
A path in a tree is a sequence of distinct nodes in which successive nodes are connected by edges in the tree.
A binary tree is a finite set of nodes which is either empty or consists of a root and two disjoint binary trees called the left sub-tree and right sub-tree.
A tree may be defined as a forest in which only a single node (root) has no predecessors. Any forest consists of a collection of trees.
The root node is always considered at level zero, then its adjacent children are supposed to be at level 1 and so on. Here, node A is at level 0, nodes B and C are at level 1 and nodes D and E are at level 2.
The depth of the tree is the depth of the deepest leaf. The height of the tree is equal to the height of the root. Always depth of the tree is equal to height of the tree.
For any node ni, the depth of ni is the length of the unique path from the root to ni. The height of ni is the length of the longest path from ni to a leaf.
The node which is having further sub-branches is called the parent node of those sub-branches. Here C is the parent node of D and E.
The nodes other than the root and the leaves are called internal nodes.
These are the terminal nodes of the tree. The nodes with degree 0 are always the leaves. Here C and B are the leave nodes.
The total number of sub-trees attached to that node is called the degree of the node.
This is the unique node in the tree to which further sub-trees are attached.
A tree is a collection of nodes. The collection can be empty; otherwise, a tree consists of a distinguished node r, called the root, and zero or more nonempty (sub) trees T1, T2,…,Tk, each of whose roots are connected by a directed edge from r.
Many languages such as BASIC and FORTRAN do not support pointers. If linked lists are required and pointers are not available, then an alternative implementation must be used known as cursor implementation.
Jobs submitted to printer Real lifeline Calls to large companies Access to limited resources in Universities Accessing files from file server
Towers of Hanoi Reversing a string Balanced parenthesis Recursion using stack Evaluation of arithmetic expressions
Linear Queues – The queue has two ends, the front end and the rear end. The rear end is where we insert elements and front end is where we delete elements. We can traverse in a linear queue in only one direction ie) from front to rear. Circular Queues – Another form of linear queue in which the last position is connected to the first position of the list. The circular queue is similar to linear queue has two ends, the front end and the rear end. The rear end is where we insert elements and front end is where we delete elements. We can traverse in a circular queue in only one direction ie) from front to rear. Double-Ended-Queue – Another form of queue in which insertions and deletions are made at both the front and rear ends of the queue.
To identify and create useful mathematical entities and operations to determine what classes of problems can be solved using these entities and operations. To determine the representation of these abstract entities and to implement the abstract operations on these concrete representation.
Persistent data structures are the data structures which retain their previous state and modifications can be done by performing certain operations on it. Eg) Stack Ephemeral data structures are the data structures which cannot retain its previous state. Eg) Queues.
Primitive data types are the fundamental data types. Eg) int, float, double, char Non-primitive data types are user defined data types. Eg) Structure, Union and enumerated data types.
It is much easier to debug small routines than large routines It is easier for several people to work on a modular program simultaneously A well-written modular program places certain dependencies in only one routine, making changes easier
An abstract data type is a set of operations. ADTs are mathematical abstractions; now here in an ADTs definition is there any mention of how the set of operations is implemented. Objects such as lists, sets and graphs, along with their operations can be viewed as abstract data types.
Data type refers to the kinds of data that variables may hold in the programming language. Eg) int, float, char, double – C The following are the types of data type: Built in data type- int, float, char, double which are defined by programming language itself User defined data type- Using the set of built in data types user can define their own data type Eg: typedef struct student
{ int roll; char name; }S; S s1; Where S is a tag for user defined data type which defines the structure student and s1 is a variable of data type S.
An Abstract data type is the specification of the data type which specifies the logical and mathematical model of the data type. A data type is the implementation of an abstract data type. Data structure refers to the collection of computer variables that are connected in some specific manner. i.e) Data type has its root in the abstract data type and a data structure comprises a set of computer variables of same or different data types.
The difference between queues and linked lists is that insertions and deletions may occur anywhere in the linked list, but in queues insertions can be made only in the rear end and deletions can be made only in the front end.