Abstract data types,
An
abstract data type (ADT) is basically a logical description or a
specification of components of the data and the operations that are allowed,
that is independent of the implementation.
ADTs are a theoretical concept in computer science, used in the design and analysis of algorithms, data structures, and software systems, and do not correspond to specific features of computer languages.
There may be thousands of ways in which a given ADT can be implemented, even when the coding language remains constant. Any such implementation must comply with the content-wise and behavioral description of the ADT.
ADTs are a theoretical concept in computer science, used in the design and analysis of algorithms, data structures, and software systems, and do not correspond to specific features of computer languages.
There may be thousands of ways in which a given ADT can be implemented, even when the coding language remains constant. Any such implementation must comply with the content-wise and behavioral description of the ADT.
Examples
For example, integers are an ADT, defined as the values 0, 1, −1, 2, 2, ..., and by the operations of addition, subtraction, multiplication, and division, together with greater than, less than, etc. which are independent of how the integers are represented by the computer. Typically integers are represented in as binary numbers, most often as two's complement, but might be binary-coded decimal or in ones' complement, but the user is abstracted from the concrete choice of representation, and can simply use the data as integers.
Another example can be a list, with components being the number of elements and the type of the elements. The operations allowed are inserting an element, deleting an element, checking if an element is present, printing the list etc. Internally, we may implement list using an array or a linked list, and hence the user is abstracted from the concrete implementation.
Check this out for the above two implementations of the list ADT: CS13002 Programming and Data Structures
Why ADT?
To manage the complexity of problems and the problem-solving process, abstractions are used to allow the user to focus on the “big picture” without getting lost in the details. By creating models of the problem domain, the user can efficiently focus on the problem-solving process.
Advantages
·
Encapsulation: The user does not need any technical knowledge of
how the implementation works to use the ADT. In this way, the implementation
may be complex but will be encapsulated in a simple interface when it is
actually used.
·
Localization of change: Code that uses an ADT object will not
need to be edited if the implementation of the ADT is changed, since any
changes to the implementation must still comply with the properties and
abilities specified in the ADT definition.
·
Flexibility: Different implementations of an ADT may be more
efficient in different situations and it is possible to use each in the
situation where they are preferable. Hence this flexibility increases the
overall efficiency.
·
Easy to understand and reusable code.
Implementation
Modern
object-oriented languages, such as C++ and Java, support implementation of ADT
in the form of a class. You can use struct in C for the same.
Check out this sample C++ code for the implementation of Complex Numbers ADT
Check out this sample C++ code for the implementation of Complex Numbers ADT
FAQ
What is the difference between an ADT and a data structure?
Simply put, ADT is more of a logical description, while a Data Structure is real, concrete thing.
2. Arrays
Declaration of array is
int x[10];
int x[]={1,2,3,4,5,6,7,8,9,0};
·
In C, when an array is initialized with size, then it assigns
defaults values to its elements in following order.
Data Type
|
Default Value
|
bool
|
false
|
char
|
0
|
int
|
0
|
float
|
0.0
|
double
|
0.0f
|
void
|
|
wchar_t
|
0
|
3.Stacks
·
Stack is an ordered list of similar data type.
·
Stack is a LIFO structure. (Last in First out).
·
push() function is used to insert new elements into the
Stack and pop() is used to delete an element from the stack. Both
insertion and deletion are allowed at only one end of Stack called Top.
·
Stack is said to be in Overflow state when it is
completely full and is said to be in Underflow state if it is
completely empty.
operations
−
·
push() − Pushing (storing) an element on the stack.
·
pop() − Removing (accessing) an element from the stack.
·
When data is PUSHed onto stack.
·
To use a stack efficiently, we need to check the status of stack
as well. For the same purpose, the following functionality is added to stacks −
·
peek() − get the top data element of the stack, without
removing it.
·
isFull() − check if stack is full.
·
isEmpty() − check if stack is empty.
Below
mentioned are the time complexities for various operations that can be
performed on the Stack data structure.
·
Push
Operation : O(1)
·
Pop
Operation : O(1)
·
Top
Operation : O(1)
·
Search
Operation : O(n)
To Do Infix prefix notation
Expression Parsing
·
Infix Notation
·
Prefix (Polish) Notation
·
Postfix (Reverse-Polish) Notation
Sr. No.
|
Infix Notation
|
Prefix Notation
|
Postfix Notation
|
1
|
a + b
|
+ a b
|
a b +
|
2
|
(a + b) ∗ c
|
∗ + a b c
|
a b + c ∗
|
3
|
a ∗ (b + c)
|
∗ a + b c
|
a b c + ∗
|
4
|
a / b + c / d
|
+ / a b / c d
|
a b / c d / +
|
5
|
(a + b) ∗ (c + d)
|
∗ + a b + c d
|
a b + c d + ∗
|
6
|
((a + b) ∗ c) - d
|
- ∗ + a b c d
|
a b + c ∗ d -
|
·
Precedence and associativity determines the order of evaluation
of an expression. Following is an operator precedence and associativity table
(highest to lowest) −
Sr. No.
|
Operator
|
Precedence
|
Associativity
|
1
|
Esponentiation ^
|
Highest
|
Right Associative
|
2
|
Multiplication ( ∗ )
& Division ( / )
|
Second Highest
|
Left Associative
|
3
|
Addition ( + ) & Subtraction ( − )
|
Lowest
|
Left Associative
|
http://www.sanfoundry.com/
4.Queues
A Queue is a linear data
structure which basically stores the data sequentially. It follows First In
First Out(FIFO) order. The following section deals with various implementations
of Queue. It contains programs to implement Queue using an array, linked list
and to implement a priority queue to add and delete elements. In a priority
queue, values come out in order by priority.
operations
associated with queues −
enqueue() − add
(store) an item to the queue.
dequeue() −
remove (access) an item from the queue.
Few
more functions are required to make the above-mentioned queue operation
efficient. These are −
peek() − Gets the
element at the front of the queue without removing it.
isfull() − Checks
if the queue is full.
isempty() −
Checks if the queue is empty.
5. Linked lists
Types
of Linked List
Doubly Linked
List
Circular
Linked List
Basic
operations supported by a list.
Insertion −
Adds an element at the beginning of the list.
Deletion −
Deletes an element at the beginning of the list.
Display −
Displays the complete list.
Search −
Searches an element using the given key.
Delete −
Deletes an element using the given key.
6. Trees.
Binary search trees,
Binary heaps,
AVL trees,
Search trees,
Graphs,
Types of graph,
Representation of graph in memory,
Applications.
Introduction to algorithms,
Searching,
Sorting,
Algorithms analysis,
Best, average, and worst case
analysis.
Asymptotic complexity, asymptotic notation. Algorithm design
using divide ‐ and ‐
conquer,
and greedy approach.
1. Two main measures for the efficiency of an algorithm are
c. Time and space
2. The time factor when determining the efficiency of algorithm
is measured by
b. Counting the number of key operations
3. The space factor when determining the efficiency of algorithm
is measured by
a. Counting the maximum memory needed by the algorithm
4. Which of the following case does not exist in complexity
theory
d. Null case
5. The Worst case occur in linear search algorithm when
d. Item is the last element in the array or is not there at all
6. The Average case occur in linear search algorithm
a. When Item is somewhere in the middle of the array
7. The complexity of the average case of an algorithm is
a. Much more complicated to analyze than that of worst case
8. The complexity of linear search algorithm is
a. O(n)
9. The complexity of Binary search algorithm is
b. O(log n)
10. The complexity of Bubble sort algorithm is
c. O(n2)
11. The complexity of merge sort algorithm is
d. O(n log n)
12. The indirect change of the values of a variable in one
module by another module is called
c. side effect
13. Which of the following data structure is not linear data
structure?
d. None of above
14. Which of the following data structure is linear data
structure?
c. Arrays
15. The operation of processing each element in the list is
known as
d. Traversal
16. Finding the location of the element with a given value is:
b. Search
17. Arrays are best data structures
a. for relatively permanent collections of data
18. Linked lists are best suited
b. for the size of the structure and the data in
the structure are constantly changing
19. Each array declaration need not give, implicitly or
explicitly, the information about
c. the first data from the set to be stored
20. The elements of an array are stored successively in memory cells because
a. by this way computer can keep track only the address of the
first element and the addresses of other elements can be calculated
1. The memory address of the first element of an array is called
d. base address
2. The memory address of fifth element of an array can be
calculated by the formula
a. LOC(Array[5]=Base(Array)+w(5-lower bound), where w is the
number of words per memory cell for the array
3. Which of the following data structures are indexed
structures?
a. linear arrays
4. Which of the following is not the required condition for
binary search algorithm?
c. There must be mechanism to delete and/or insert elements in
list
5. Which of the following is not a limitation of binary search
algorithm?
d. binary search algorithm is not efficient when the data
elements are more than 1000.
6. Two dimensional arrays are also called
c. both of above
7. A variable P is called pointer if
a. P contains the address of an element in DATA.
8. Which of the following data structure can't store the
non-homogeneous data elements?
a. Arrays
9. Which of the following data structure store the
non-homogeneous data elements
b. Records
10. Each data item in a record may be a group item composed of
sub-items; those items which are indecomposable are called
d. all of above
11. The difference between linear array and a record is
d. All of above
12. Which of the following statement is false?
c. pointers store the next data element of a list
13. Binary search algorithm can not be applied to
a. sorted linked list
14. When new data are to be inserted into a data structure, but
there is no available space; this situation is usually called
b. overflow
15. The situation when in a linked list START=NULL is
a. underflow
16. Which of the following is two way list?
d. none of above
17. Which of the following name does not relate to stacks?
a. FIFO lists
18. The term "push" and "pop" is related to
the
c. stacks
19. A data structure where elements can be added or removed at
either end but not in the middle
d. Deque
20. When inorder traversing a tree resulted E A C K F H D B G;
the preorder traversal would return
b. FAEKCDHGB
1. Which data structure allows deleting
data elements from front and inserting at rear?
b. Queues
2. Identify the data structure which
allows deletions at both ends of the list but insertion at only one end.
a. Input-restricted deque
3. Which of the following data structure
is non-linear type?
d. None of above
4. Which of the following data structure
is linear type?
d. All of above
5. To represent hierarchical relationship
between elements, which data structure is suitable?
c. Tree
6. A binary tree whose every node has
either zero or two children is called
c. Extended binary tree
7. The depth of a complete binary tree is
given by
d. Dn = log2n + 1
8. When representing any algebraic
expression E which uses only binary operations in a 2-tree,
a. the variable in E will appear as external nodes and
operations in internal nodes
9. A binary tree can easily be converted
into q 2-tree
d. by replacing each empty sub tree by a new external node
10. When converting binary tree into extended binary
tree, all the original nodes in binary tree are
a. internal nodes on extended tree
11. The post order traversal of a binary tree is DEBFCA.
Find out the pre order traversal
c. ABDECF
12. Which of the following sorting algorithm is of
divide-and-conquer type?
c. Quick sort
13. An algorithm that calls itself directly or
indirectly is known as
b. Recursion
14. In a binary tree, certain null entries are
replaced by special pointers which point to nodes higher in the tree for
efficiency. These special pointers are called
d. thread
15. The in order traversal of tree will yield a
sorted listing of elements of tree in
b. Binary search trees
16. In a Heap tree
b. Values in a node is greater than every value in children
of it
17. In a graph if e=[u, v], Then u and v are called
d. all of above
18. A connected graph T without any cycles is called
d. All of above
19. In a graph if e=(u, v) means
d. both b and c
20. If every node u in G is adjacent to every other node v
in G, A graph is said to be
b. complete