0% found this document useful (0 votes)
46 views3 pages

Data Structures Course Overview

The document outlines a Data Structures course covering various topics such as Abstract Data Types, stacks, queues, trees, multiway search trees, graphs, and sorting algorithms. It includes practical implementations of data structures and algorithms, along with course outcomes that emphasize the identification and application of data structures. References for further reading are provided, along with a CO-PO mapping for assessing student outcomes.

Uploaded by

pavi mythili
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)
46 views3 pages

Data Structures Course Overview

The document outlines a Data Structures course covering various topics such as Abstract Data Types, stacks, queues, trees, multiway search trees, graphs, and sorting algorithms. It includes practical implementations of data structures and algorithms, along with course outcomes that emphasize the identification and application of data structures. References for further reading are provided, along with a CO-PO mapping for assessing student outcomes.

Uploaded by

pavi mythili
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

241CSC301J DATA STRUCTURES L T P RC

3 0 2 0 4

UNIT – I LISTS 9L
Abstract Data Types (ADTs) – List ADT – Array-based implementation – Linked list implementation –
Singly linked lists – Circularly linked lists – Doubly-linked lists – Applications of lists – Polynomial ADT –
Radix Sort – Multilists.

UNIT – II DESCRIBING DATA STACKS AND QUEUES 9L

Stack ADT – Operations – Applications – Balancing Symbols – Evaluating arithmetic expressions- Infix to
Postfix conversion – Function Calls – Queue ADT – Operations – Circular Queue – DeQueue –
Applications of Queues

UNIT – III TREES 9L

Tree ADT – Tree Traversals - Binary Tree ADT – Expression trees – Binary Search Tree ADT – AVL Trees
– Priority Queue (Heaps) – Binary Heap

UNIT – IV MULTIWAY SEARCH TREES AND GRAPHS 9L


B-Tree – B+ Tree – Graph Definition – Representation of Graphs – Types of Graph - Breadth-first traversal
– Depth-first traversal –– Bi-connectivity – Euler circuits – Topological Sort – Dijkstra's algorithm –
Minimum Spanning Tree – Prim's algorithm – Kruskal's algorithm

UNIT – V SEARCHING, SORTING AND HASHING TECHNIQUES 9L


Searching – Linear Search – Binary Search. Sorting – Bubble sort – Selection sort – Insertion sort – Shell
sort –. Merge Sort – Hashing – Hash Functions – Separate Chaining – Open Addressing –Rehashing –
Extendible Hashing

PRACTICALS:

1. Array implementation of Stack, Queue and Circular Queue ADTs


2. Implementation of Singly Linked List
3. Linked list implementation of Stack and Linear Queue ADTs
4. Implementation of Polynomial Manipulation using Linked list
5. Implementation of Evaluating Postfix Expressions, Infix to Postfix conversion
6. Implementation of Binary Search Trees
7. Implementation of AVL Trees
8. Implementation of Heaps using Priority Queues
9. Implementation of Dijkstra’s Algorithm
10. Implementation of Prim’s Algorithm
11. Implementation of Linear Search and Binary Search
12. Implementation of Insertion Sort and Selection Sort
13. Implementation of Merge Sort
14. Implementation of Open Addressing (Linear Probing and Quadratic Probing)

TOTAL: 45L + 30P = 75 PERIODS

COURSE OUTCOMES :
Upon completion of the course, the students will be able to

1. Identify linear and non-linear data structures.


2. Implement linear and non–linear data structure operations.
3. Utilize appropriate linear/non–linear data structure operations for solving a given problem.
4. Apply appropriate graph algorithms for graph applications.
5. Analyze the various searching and sorting algorithms.

REFERENCES:
1. Mark Allen Weiss, Data Structures and Algorithm Analysis in C, 2nd Edition, Pearson Education, 2005.
Units: I, II, III, V
2. Kamthane, Introduction to Data Structures in C, 1st Edition, Pearson Education, 2007 Units: I, II
3. Langsam, Augenstein and Tanenbaum, Data Structures Using C and C++, 2nd Edition, Pearson Education,
2015. Units: I, II, III, IV, V
4. Thomas H. Cormen, Charles E. Leiserson, Ronald [Link], Clifford Stein, Introduction to Algorithms",
Fourth Edition, Mcgraw Hill/ MIT Press, 2022. Units: III, IV, V
5. Alfred V. Aho, Jeffrey D. Ullman,John E. Hopcroft ,Data Structures and Algorithms, 1st edition, Pearson,
2002. Units: I, III, IV
6. Kruse, Data Structures and Program Design in C, 2nd Edition, Pearson Education, 2006. Units: II, III, IV,
V
CO– PO Mapping

CO PO1 PO2 PO3 PO4 PO5 PO6 PO7 PO8 PO9 PO10 PO11 PSO1 PSO2

CO1 2 3 1 2 2 1 1 – 1 2 3 2 3
CO2 1 2 1 2 2 – – – 1 1 2 2 2

CO3 2 3 1 2 3 – – – 1 1 2 2 2
CO4 2 1 – 1 1 – – – 2 1 2 2 3

CO5 1 2 1 2 2 1 1 – 1 2 3 2 3

1– low, 2– medium, 3– high, ‘– “– no correlation

Common questions

Powered by AI

AVL Trees provide self-balancing properties that ensure the heights of two child subtrees of any node differ by no more than one, maintaining a O(log n) time complexity for insertions and deletions. This contrasts with basic Binary Search Trees, which can degrade to O(n) time complexity in worst-case scenarios when they become unbalanced, essentially behaving like a linked list . AVL Trees perform necessary rotations during insertions and deletions to maintain balance, ensuring efficiency remains consistent, which is crucial for applications requiring frequent modifications and queries on large datasets .

Dijkstra's algorithm is fundamental in modern computing for finding the shortest path between nodes in a weighted graph, widely applied in network routing and mapping applications. It efficiently handles graphs with non-negative weights using a greedy approach, building up the shortest path iteratively . However, its limitations include inefficiency with graphs containing negative weight edges, as it can underestimate the true optimal path. Alternative algorithms, like the Bellman-Ford algorithm, are preferred in such cases, despite their higher time complexity . Dijkstra's algorithm is generally efficient with time complexities that can range from O(V^2) in a naive implementation to O((V + E) log V) with priority queue optimizations .

The Stack ADT primarily supports operations such as push, pop, and top, which can be utilized in multiple applications. Notable applications include balancing symbols in expressions, where stacks keep track of opening symbols to ensure they have corresponding closing partners . It also applies to evaluating arithmetic expressions and converting infix expressions to postfix, where operands and operators are handled in LIFO (last-in-first-out) order . Additionally, stacks facilitate function call management, precisely I for managing local variables and return points, through push and pop operations .

Merge Sort is a stable, divide-and-conquer algorithm with a time complexity of O(n log n) across best, average, and worst cases. It is well-suited for stable sorting and external sorting scenarios due to its predictable resource usage . Conversely, Quick Sort, which also follows the divide-and-conquer paradigm, typically provides better performance and cache utilization than Merge Sort on average, with an average and best-case time complexity of O(n log n). However, its performance can deteriorate to O(n^2) in the worst case, though optimizations like choosing a random pivot help mitigate this . Quick Sort is often preferred for in-memory sorting of large datasets due to its lower constant factors and in-place sorting attributes .

Radix Sort is significant in sorting algorithm domains as it processes input elements digit by digit, grouping them by each digit's value. Unlike comparative sorts, its time complexity of O(nk) depends on the number of elements n and the number of digits k. It is particularly efficient for sorting large numbers of elements with small key spaces, such as integers or strings where digit-based distribution can be applied . While it does require additional memory for simple counting or bucket sorting in each pass, Radix Sort's efficiency in processing elements in linear time makes it very useful for specific scenarios like sorting on keys with fixed length and diverse applications in distributing workloads .

Open Addressing and Separate Chaining are two primary strategies for collision resolution in hash tables. Open Addressing, which involves probing to find an available slot within the table, offers improved space efficiency as all data is stored within the hash table itself. However, it can suffer from clustering and reduced performance as the table becomes full . In contrast, Separate Chaining, using linked lists or similar structures attached to each table index, is often more resilient to clustering because it can handle more entries than there are table indices, though it requires additional memory for the link structures . Generally, Separate Chaining provides more consistent performance under high load factors, while Open Addressing is preferred when space is a significant constraint .

Bi-connectivity refers to a property of graphs critical for understanding network resilience, indicating that the graph remains connected even after the removal of any single vertex (i.e., no single point of failure). It plays a significant role in designing robust communication networks and infrastructure, ensuring that network components remain accessible despite failures . Algorithms for finding bi-connected components, such as depth-first search, are crucial in assessing connectivity and identifying articulation points whose failure would disrupt the network . Understanding bi-connectivity helps create redundancies that facilitate continuous operation under contingencies, essential for network planning and management .

The Array-based implementation of lists typically offers O(1) time complexity for index-based access, which is efficient for read operations on random indices . However, operations such as insertion or deletion at arbitrary positions often require O(n) time due to the need to shift elements. In contrast, Linked list implementations, like singly linked lists, doubly linked lists, or circular linked lists, have O(1) time complexity for insertions and deletions at the head or tail but generally O(n) for access due to sequential traversal . Thus, the choice between these implementations depends on the specific use case—array-based is optimal for frequent access, while linked list is preferable for frequent insertion/deletion.

The balance factor in AVL Trees, defined as the difference in heights between the left and right subtrees, must be within the range [-1, 1] for the tree to remain balanced and efficient . When operations like insertions and deletions disrupt this balance, rotations come into play to restore it. Single and double rotations are used depending on the imbalance case identified. LL and RR cases involve single rotations, while LR and RL cases require double rotations . These rotations realign tree nodes, ensuring the logarithmic height property of AVL Trees, therefore maintaining their O(log n) operational complexity for insertions, deletions, and lookups .

B-Trees are a type of self-balancing search tree where nodes can have more than two children, and all leaf nodes are at the same depth. They are commonly used in databases and file systems due to their ability to handle large volumes of data efficiently. B+ Trees, a variant of B-Trees, store data pointers only at the leaf nodes and have linked leaves, which enhances sequential access. This makes B+ Trees more efficient for range queries and large datasets, a typical requirement in database indexing . Additionally, the internal nodes in B+ Trees only contain keys, leading to better space utilization and faster traversal for equality searches .

You might also like