0% found this document useful (0 votes)
68 views163 pages

Calicut University Data Structures Syllabus

The Calicut University syllabus for CS09 302: Data Structures outlines the course structure, including various modules covering topics such as primitive data types, linear and non-linear data structures, algorithms, and their complexities. It emphasizes the understanding of data organization, searching, and sorting techniques, along with practical implementations of data structures like stacks, queues, trees, and graphs. The course consists of 4 hours of lectures and 1 hour of tutorials per week, totaling 5 credits.

Uploaded by

Pandi Durai K
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
68 views163 pages

Calicut University Data Structures Syllabus

The Calicut University syllabus for CS09 302: Data Structures outlines the course structure, including various modules covering topics such as primitive data types, linear and non-linear data structures, algorithms, and their complexities. It emphasizes the understanding of data organization, searching, and sorting techniques, along with practical implementations of data structures like stacks, queues, trees, and graphs. The course consists of 4 hours of lectures and 1 hour of tutorials per week, totaling 5 credits.

Uploaded by

Pandi Durai K
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Cöttent

Calicut University Syllabus


CS09 302 :Data Structures CHAPTER-1
Credits:5
Teaching scheme Introductlonto Data Structures
per week
4 hours lecture and 1 hour tutorial
1.1 Introduction 1.1
Objectives 1.2 Primitive Data Types.
continuous dota structures
Tb impart the basic concepts of techniques.
1.3 Scalar Data Type .... 1.4

" Tb develop understanding about fundamental searching and sorting 1.4 Enumerated Data Type 1.4
(11 hours) 1.5 Subrange Types 1.5
Module I 1.6 Arrays
Primitive types - Enumerated types 1.6
Review of Data Types - Scalar Types - Records - Complexity of 1.7 Records 1.7
representation -
Subranges - Arrays- sparse matrices -
Algorithms - Time & Space Complexity of Algorithms -Recursion: Recursive 1.8 Sparse Matrix
1.9
1.8
Algorithm Analysis ............. 1.16
algorithms - Analysis of Recursive algorithms 1.10 Computational Complexity 1.17
(18 hours) 1.11 Asymptotic Notations .. .... 1.18
Module II Dequeus - Linked List - singly, 1.12. Recursion
-Lists -
Linear Data Structures -Stacks- Queues
1.22
linked lists - Polynomial 1.13 Recursive Algorithms
doubly linked and circular lists - Application of 1,22
using Array &Linked List -Typical 1.14 Analysis of Recursive Algorithms
Manipulation - Stack &Queue implementation
1.26
postfix expression - priority
problems - Conversion of infix to postfix - Evaluation of
CHAPTER-1
queues
(18 hours) Abstract Data Type: List ADT
Module II implementation using
Trees - Graph and Tree 2.1 Introduction
Non Linear Structures - Graphs traversals - pre-order, in-order
2.1
Linked List- Binary trees - Binary tree 2.1.1 Primitive Data Structures 2.1
array and - AVL trees- B trees
binary trees - Binary Search trees Dijkstra's algorithm, 2.1.2 Abstract Data Types 2.2
and postorder - Threaded shortest path - 2.2 The List ADT
traversals - DFS, BFS - 2.2
and B+ trees - Graph algorithm
Kruskal Algorithm, Prims 2.3 Implementation of List 2.5
Minimum spanning tree - 2.3.1 Array Based Implementation
(18 hours) 2.3
2.3.2 Linked List Based Implementation
Module IV Lists - Binary 2.3
Searching Arrays and Linked 2.4 Singly Linked List
Searching - Sequential Search - Open & Closed 2.6
Searching arrays and Binary Search Treeg - Hashing - Bubble Sort 2.5 Doubly Linked List 2.22
Searching- Sorts -
Resolution of Collision -Sorting- n2 " 2.6 Oircular Linked List...
Hashing- Hash functions - Quick Sort - Heap Sort - Merge 2.37
- Selection Sort -n log nSorts - 2.6.1 Singly Circular Linked List ..... 2.38
-Insertion Sort 2.6.2. Doubly Circular Linked List
Merge Files
Sort - External Sort-
2.50
2.7 Cursor Based Implementation 2.60
Credits : 5
Teaching scheme tutorial per week
2.8 Application of List 2.65
and 1 hour
4 hours lecture
6.2 B-Tree 6.13
CHAPTER - 3 6.3 Priority Queue (Heap) ... 6.18
Stack ADT 6.3.1 Need for Priority Queue ... 6.18
3.2 6.3.2 Model of priority Queue 6.19
3.1 Implementation of Stack ADT 3.2 6.3.3 Implementation of Priority Queue 6.19
3.1.1 Array Implementation of Stack. 3.5 6.3.4 Binary Heap . 6.20
Stack
3.1.2 Linked List Implementation of 3.9 6.4 Splay Trees. 6.26
3.2 Applications of Stack. 6.4.1 Splay Rotations 6.26
CHAPTER - 4 6.4.2 Operations on Splay Tree 6.30
Queue ADT
4.2
CHAPTER -7
4.1 Implementation of Queue ADT ********.., 4.2 Hashing
4.1.1 Array Implementation of Queue 4.6 7.1 Hashing 7.1
Queue
4.1.2 Linked List Implementation of 4.11 7.2 Separate Chaining 7.3
4.2 Circular Queue 4.14 7.3 Open Addressing. ... 7.6
4.3 Double Ended Queue 4.18 7.4 Rehashing 7.11
4.4 Application of Queue 7.5 Extendible Hashing 7.14
CHAPTER - 5
Trees CHAPTER- 8
5.1
Disjoint Set
5.1 Tree Preliminaries 5.2 8.1 Equivalence Relations 8.1
5.1.1 Basic Tree Concepts. 5.4 8.2 Dynamic Equivalence Problem
General Trees 8.2
5.2 Left Child/Right Sibling Data Structures for .... 5.5 8.3 Smart Union Algorithm.. 8.4
Tree Traversals 5.8 8.4 Path Compression
58 8.10
5.4 Binary Trees 5.8 8.5 Application of Set. 8.11
5.4.1 Types of Binary Tree ... 5.10
5.4.2 Binary Tree Representation. 5.13 CHAPTER - 9
5.5
Binary Tree Traversal. 5.19 Sorting and Searching
5.6 Expression Trees... 5.22 9.1 Preliminaries 9.1
5.7 Binary Search Tree 5.34 9.2 Bubble Sort
Threaded Binary Tree 9.3- Insertion Sort...
9.2)
5.8 9.5
CHAPTER -6 9,4 Selection Sort.
Balanced Trees
(9.)
9e6- Merge Sort. 9.9
6.1 9.6 Radix Sort 9.13
6.1 AVL Trees.. 6.2 s Quick Sort 9.17
6.1.1 Insertion of a node 6.2 .9.8 Heap Sort 9.21
6.1.2 Rotations
9.31
9.9 Shell Sort 9.33
9.10 External Sorting ..... 9.33
9.10.1 Two-Way Merge 9.35
9.10.2 Multi-Way Merge 9.36
9:10,3 Polyphase Merge 9,37
CHAPTER
911 Searching 9.37
9.11.1 Linear Search
9.39
9.11.2 Binary Search.
CHAPTER- 10
Graphs
Introduction to DataStructures
10.1
10.1 Preliminaries
10.9
10.2 Graph Representation 1.1 INTRODUCTION
10.14
10.3 Application of Graph Data:
10.14
10.3.1 Airline route map-undirected graph. 10.14 Data represents a collection of fact8, concepts, figures, observation, occurrence
10.3.2 An electrical circuit or instructiong in a formalized manner.
10.15
10.3.3 Flowcharts - Directed graph 10.15
Data Structure:
10.3.4 Computer Networks 10,15 Data structure is defined as a particular way of organizing data in memory.
10.4 Topological Sort 10.21 Data can be organized in many ways. They are
10.5 Graph Traversals 10.21 1, Primitive data types.
10.5.1 Depth First Search 10.24 2. Arrays.
10.5.2 Breadth First Search. 10.28 3. Linked List.
10.6 Shortest Path Algorithm 10.29 4. Trees.
10.6.1 Single Source Shortest Path .. 10.29 5. Graphs.
[Link] Unweighted Shortest Path. 10,35 6. Files.
[Link] Dijkstra's Algorithm 10.39 If the data
contains a single value, this can be organized as a
10.7 Minimum Spanning Tree. 10.40 data type. If the data contains a set of same data primitive
10.7.1 Prim's Algorithm. 10.45 type values, then this can be
10.7.2 Kruskal's Algorithm organized consecutively using arrays. Ifthe data contains a set of
10.48
values,then this can be organized not in same data type
10.8 Biconnectivity 10.52
If the data contains a set of
consecutively using linked list.
10.9 Euler Circuit same type of values with a
hierarchical
relationship, then this can be organized using trees. If the data contains a set of
same values with a relationship between pairs of values, then this
can be organized
using graphs.
Tfthe data contains a set or different value8, then this
can be organized using
files,

Common questions

Powered by AI

Hashing techniques play a vital role in data search by providing efficient access to data through the use of a hash function that converts keys into hash codes, which direct the placement of data in a hash table. Open hashing, also known as separate chaining, handles collisions by maintaining a list of all elements that hash to the same location. In contrast, closed hashing, or open addressing, resolves collisions by placing new elements in the next available spot within the hash table. Thus, open hashing makes use of additional data structures (like linked lists), while closed hashing manages collisions within the table itself, utilizing techniques like linear probing or double hashing to find available positions .

External sorting is crucial for sorting large datasets that exceed main memory size. Two-way merge sort divides the dataset into smaller segments that fit into memory, sorts each, and then sequentially merges them back together using two input and one output buffer, efficiently reducing disk I/O operations. Polyphase merge sort optimizes this process by utilizing fixed-length runs for distribution, ensuring that the output buffer does not become idle, resulting in efficient merging cycles. Both effectively manage data transfer between slower disk storage and faster main memory, allowing for speed despite large data size limitations .

AVL trees and B-trees are both self-balancing binary search trees but differ in usage and structure. AVL trees maintain height balance by performing rotations to ensure the height difference between left and right subtrees at any node does not exceed one, supporting efficient worst-case time complexity for search operations, suitable for in-memory data structures in DBMS. B-trees, however, extend more than two children per node (multi-way) and are designed for efficient disk reads and writes by minimizing node access and maximizing data in each node, making them ideal for databases needing fast access to large blocks of data on secondary storage .

Binary tree traversals include pre-order, in-order, and post-order traversals, which differ in the order nodes are processed. Pre-order traversal processes the root first, then recursively traverses the left and right subtrees, making it suitable for copying or prefix notation. In-order traversal visits the left subtree first, processes the root, and then traverses the right, often used for retrieving sorted data from a BST. Post-order traversal processes both subtrees before the root, which is helpful in deleting a tree or postfix notation operation .

Depth-first search (DFS) and breadth-first search (BFS) process graphs differently by the order in which nodes are explored. DFS explores as far down a branch as possible before backtracking, using a stack data structure, which makes it suitable for pathfinding and situations where we need to visit all nodes in a "deep" manner (e.g., solving mazes). BFS, on the other hand, explores nodes level by level, using a queue data structure, making it ideal for finding the shortest path in an unweighted graph, such as the shortest distance from one point to another in a social network .

The quick sort algorithm differs from merge sort primarily in method and efficiency of sorting. Quick sort is a divide-and-conquer algorithm that selects a 'pivot' and partitions the array into sub-arrays, which are then sorted independently, making it efficient for in-place sorting with an average-case time complexity of O(n log n). It's preferred when space is a concern and average performance is adequate. Merge sort, on the other hand, divides the array into halves, recursively sorts them, and merges the results, offering stable sort with a consistent time complexity of O(n log n). It is favored in contexts where stability is required or when dealing with linked lists .

Dijkstra's algorithm finds the shortest path from a single source node to all other nodes in a graph by iteratively selecting the node with the smallest tentative distance and updating its neighbors, ideal for weighted graphs where negative weights do not exist. Kruskal's algorithm finds a minimum spanning tree by sorting all edges and choosing the smallest edge that does not form a cycle, which is especially suited to sparse graphs or when the network is established from independent edges .

Linked lists differ from arrays primarily in terms of memory allocation and structure. Arrays require a contiguous block of memory and are static in size, meaning the size must be determined at the time of declaration and cannot be changed during runtime. This can lead to inefficient use of memory if the array is under-utilized or memory overflow issues if it’s over-utilized. Linked lists, on the other hand, consist of nodes where each node contains data and a reference to the next node, allowing for dynamic memory allocation. This means the list can grow and shrink in size as needed, utilizing only the necessary amount of memory, and can easily accommodate the insertion and deletion of elements without reorganizing the entire structure .

The primary advantage of using a Binary Search Tree (BST) over a linked list for searching data is the average time complexity. In a linked list, searching for an element requires traversing through all elements, resulting in O(n) time complexity. In a well-balanced BST, the average time complexity for search operations is O(log n), making it significantly faster for large datasets. The hierarchical structure of BSTs allows them to efficiently narrow down the potential location of a search target by eliminating half of the nodes from consideration at each step .

Asymptotic notation is crucial for analyzing algorithm efficiency by providing a mathematical way to describe the maximum, minimum, or average resource usage (time and space) as a function of input size. It abstracts actual execution details while offering insight into scalability and performance. Different types of asymptotic notations include Big O (O), which characterizes the upper bound of an algorithm's runtime, providing a worst-case scenario analysis; Big Omega (Ω), offering an asymptotic lower bound indicating best-case scenario analysis; and Big Theta (Θ), providing a tight bound that indicates both the upper and lower bounds of an algorithm .

You might also like