Report Project (Anjali)

Download as pdf or txt
Download as pdf or txt
You are on page 1of 30

SUMMER TRAINING REPORT

On
C++ AND DATA STRUCTURE

In partial fulfillment of the requirements for the award of the Degree of Bachelor of
Technology

In

Computer Science and Engineering

Under The Supervision of

Mr. Akshay Rawat

SLOG SOLUTIONS PVT. LTD.

Submitted By Submitted to
Anjali kumari [B.TECH(CSE)] Mr. Sanjeev Sharma
Roll NO.- UU2201010074 Assitant Professor
CSE Department
UIT, University
ACKNOWLEDGMENT

I express my satisfaction on the completion of this summer training programme and project

report summation as a part of the curriculum for the degree of Bachelor of Engineering

Computer Science. I express my deepest gratitude to my supervisor and mentor Mr Akshay for

his kind guidance during the entire period of training his consistent support and advises has

helped me to complete this research project successfully also I thank all the members of Slog

Solutions Pvt. ltd. Dehradun for their kind support.

I would also like to extend my gratitude to the Head of the Department of Computer Science

Dr. Sumit Chaudhary for providing me with all the facilities that was required.

Anjali kumari

B.tech[CSE]

Date:
CERTIFICATE OF TRAINING
TABLE OF CONTENTS -

ACKNOWLEDGMENT

1 . INTRODUCTION

1.1 About C++


1.2 Uses.
1.3 Basic Data types.
1.4 Structure of a C++ program.
1.5 Control flow statements.

2. FUNCTIONS IN C++

2.1 Function and its syntax


2.2 Types of functions
3 POINTERS AND REFERENCE VARIABLE IN C++
4 CLASSES AND OBJECTS IN C++
4.1 Constructor

5. OBJECT ORIENTED PROGRAMMING LANGUAGE

5.1 about OOPs


5.2 Encapsulation
5.3 Abstraction
5.4 Polymorphism.
5.5 Inheritance

6 . DATA STRUCTURE

6.1 Classification of Data Structure


6.2 Linear Data Structure

6.3 Non-Linear Data Structure


7. ARRAYS

7.1 Characteristics of an Array


7.2 Operations performed on array
7.3 Applications

8. LINKED LIST

8.1 Characteristics of a Linked list


8.2 Operations performed on Linked list
8.3 Applications

9 . STACK

9.1 Characteristics of a Stack


9.2 Operations performed on Stack
9.3 Applications

10 . QUEUE

10.1 Characteristics of a Queue

10.2 Operations performed on Queue

10.3 Applications

11. TREE

11.1 Characteristics of a Tree

11.2 Operations performed on Tree

11.3 Applications

12. GRAPH

12.1 Characteristics of a Graph

12.2 2 Operations performed on Graph

12.3 Applications

13. CONCLUSION
1. INTRODUCTION

1.1 ABOUT C++

• C++ was developed by Bjarne Stroustrup starting in1979 at Bell Labs.


• C++ is a cross-platform language that can be used to create high performance
applications.
• C++ is the most widely used programming language and it is very close to hardware.
• C++ programming gives you a clear understanding of Object -Oriented Programming.

1.2 USES OF C++ PROGRAMMING

• Programming Language Development.


• Computation Programming.
• Application Software Development.
• Games Development.
• Embedded System

1.3 BASIC DATA TYPES IN C++.

1.4 STRUCTURE OF C++ PROGRAMMING


PROGRAM: SIMPLE OUTPUT

1.5 CONTROL FLOW STATEMENTS


2. FUNCTIONS IN C++

A function is a set of statements that take inputs , do some specific computation and produces
output. The idea is to put some commonly or repeatedly done tasks together to make a
function so that instead of writing the same code again and again for different inputs, we can
call this function.

2.1 SYNTAX:

EXAMPLE:

C++

// C++ Program to demonstrate working of a function


#include <iostream>
using namespace std;

// Following function that takes two parameters 'x' and 'y'


// as input and returns max of two input numbers
int max(int x, int y)
{
if (x > y)
return x;
else
return y;
}
// main function that doesn't receive any parameter and
// returns integer
int main()
{
int a = 10, b = 20;

// Calling above function to find max of 'a' and 'b'


int m = max(a, b);

cout << "m is " << m;


return 0;
}

OUTPUT : m is 20

2.2 TYPES OF FUNCTION:

USER DEFINED FUNCTION

User-defined functions are user/customer-defined blocks of code specially


customized to reduce the complexity of big programs

LIBRARY FUNCTION

Library functions are also called “built-in Functions“. These functions are part
of a compiler package that is already defined and consists of a special function
with special and different meanings.
3. POINTERS AND REFERENCE VARIABLE IN C++

POINTERS:

Pointers are symbolic representation of addresses. They enable programs to stimulate call-
by-reference as well as to create and manipulate dynamic data structure . Iterating over
elements in arrays or other data structure is one of the main use of pointers.

SYNTAX:
datatype *var_name;

int *ptr; // ptr can point to an address which holds int data

REFERENCE VARIABLE IN C++


When a variable is declared as a reference, it becomes an alternative name for an existing
variable. A variable can be declared as a reference by putting ‘&’ in the declaration.
SYNTAX:

data_type &ref = variable;

4. CLASSES AND OBJECT IN C++

• C++ is a Object oriented programming language.


• Everything in C++ is associated with classes and objects, along with its attributes and
methods.
• A class is a blueprint for the object.
• Attributes and methods are basically variables and functions that belong to the class.
These are often referred to as “class member”.

DEFINING CLASS AND DECLARING OBJECTS


A class is defined in C++ using the keyword class followed by the name of the class. The
body of the class is defined inside the curly brackets and terminated by a semicolon at the
end.
4.1 CONSTRUCTOR: A constructor in C++ is a special method that is automatically
called when an object of a class is created . To create a constructor , use the same name as
the class , followed by parenthesis():

ACCESS SPECIFIER:

In C++ , there are three access specifiers :

Public- members are accessible from outside the class.

Private- members cannot be accessed (or viewed) from outside the class .

Protected – members cannot be accessed from outside the class.


5. OBJECT ORIENTED PROGRAMMING LANGUAGE

As the name suggests uses objects in programming. Object-oriented programming aims to


implement real-world entities like inheritance, hiding, polymorphism, etc. in programming.
The main aim of OOP is to bind together the data and the functions that operate on them so
that no other part of the code can access this data except that function.

There are some basic concepts that act as the building blocks of OOPs i.e.

i. Class
ii. Objects
iii. Encapsulation
iv. Abstraction
v. Polymorphism
vi. Inheritance

5.1 ENCAPSULATION
In normal terms, Encapsulation is defined as wrapping up data and information under a
single unit. In Object-Oriented Programming, Encapsulation is defined as binding together
the data and the functions that manipulate them. Consider a real-life example of
encapsulation, in a company, there are different sections like the accounts section, finance
section, sales section, etc

5.2 ABSTRACTION
Data abstraction is one of the most essential and important features of object-
oriented programming in C++. Abstraction means displaying only essential
information and hiding the details. Data abstraction refers to providing only
essential information about the data to the outside world, hiding the
background details or implementation. Consider a real-life example of a man
driving a car.

5.3 POLYMORPHISM
The word polymorphism means having many forms. In simple words, we can
define polymorphism as the ability of a message to be displayed in more than
one form. A person at the same time can have different characteristics. A man
at the same time is a father, a husband, and an employee. So the same person
possesses different behavior in different situations. This is called
polymorphism.

5.4 INHERITANCE
The capability of a class to derive properties and characteristics from another
class is called Inheritance. Inheritance is one of the most important features of
Object-Oriented Programming.
• Sub Class: The class that inherits properties from another class is
called Sub class or Derived Class.
• Super Class: The class whose properties are inherited by a sub-class
is called Base Class or Superclass.
• Reusability: Inheritance supports the concept of “reusability”, i.e.
when we want to create a new class and there is already a class that
includes some of the code that we want, we can derive our new class
from the existing class. By doing this, we are reusing the fields and
methods of the existing class.
6. DATA STRUCTURE-

A data structure is a way to store and organize data in order to facilitate access and
modifications . More precisely, a data structure is a collection of data values, the relationships
among them, and the functions or operations that can be applied to the data. No single data
structure works well for all purposes, and so it is important to know the strengths and
limitations of several of them.

USAGE-

Different kinds of data structures are suited to different kinds of applications, and some are
highly specialized to specific tasks. For example, relational databases commonly use B-
tree indexes for data retrieval while compiler implementations usually use hash tables to look
up identifiers. Data structures provide a means to manage large amounts of data efficiently
for uses such as large databases and internet indexing services. Usually, efficient data
structures are key to designing efficient algorithms. Some formal design methods
and programming languages emphasize data structures ,rather than algorithms, as the key
organizing factor in software design. Data structures can be used to organize the storage and
retrieval of information stored in both main memory and secondary memory.
6.1 CLASSIFICATION OF DATA STRUCTURE

Data structure has many different uses in our daily life. There are many different data
structures that are used to solve different mathematical and logical problems. By using data
structure, one can organize and process a very large amount of data in a relatively short
period. Let’s look at different data structures that are used in different situations.

6.2 LINEAR DATA STRUCTTURE: Data structure in which data elements are
arranged sequentially or linearly, where each element is attached to its previous and next
adjacent elements, is called a linear data structure.
Examples of linear data structures are array, stack, queue, linked list, etc.

• Static data structure: Static data structure has a fixed memory size. It is easier
to access the elements in a static data structure.
An example of this data structure is an array.
• Dynamic data structure: In the dynamic data structure, the size is not fixed. It
can be randomly updated during the runtime which may be considered efficient
concerning the memory (space) complexity of the code.
Examples of this data structure are queue, stack, etc.
6.3 NON-LINEAR DATA STRUCTTURE: Data structures where data elements
are not placed sequentially or linearly are called non-linear data structures. In a non-
linear data structure, we can’t traverse all the elements in a single run only.
NEED OF DATA STRUCTURE:

The structure of the data and the synthesis of the algorithm are relative to each other. Data
presentation must be easy to understand so the developer, as well as the user, can make an
efficient implementation of the operation.
Data structures provide an easy way of organizing, retrieving, managing, and storing data.
Here is a list of the needs for data.
1. Data structure modification is easy.
2. It requires less time.
3. Save storage memory space.
4. Data representation is easy.
5. Easy access to the large database.
IMPLEMENTATION-

Data structures are generally based on the ability of a computer to fetch and store data at any
place in its memory, specified by a pointer — a bit string, representing a memory address,
that can be itself stored in memory and manipulated by the program. Thus, the array and
record data structures are based on computing the addresses of data items with arithmetic
operations, while the linked data structures are based on storing addresses of data items
within the structure itself. Many data structures use both principles, sometimes combined in
non-trivial ways.

ADVANTAGES OF DATA STRUCTURE-


▪ Improved data organization and storage efficiency.
▪ Faster data retrieval and manipulation.
▪ Facilitates the design of algorithms for solving complex problems.
▪ Eases the task of updating and maintaining the data.
▪ Provides a better understanding of the relationships between data elements.
DISADVANTAGES OF DATA STRUCTURE-
▪ Increased computational and memory overhead.
▪ Difficulty in designing and implementing complex data structures.
▪ Limited scalability and flexibility.
7. ARRAYS:

An array is a linear data structure, and it is a collection of items stored at contiguous


memory locations. The idea is to store multiple items of the same type together in one
place. It allows the processing of a large amount of data in a relatively short period. The
first element of the array is indexed by a subscript of 0. There are different operations
possible in an array, like Searching, Sorting, Inserting, Traversing, Reversing, and Deleting.

7.1 CHARACTERISTICS OF AN ARRAY:


An array has various characteristics which are as follows:
• Arrays use an index-based data structure which helps to identify each of the
elements in an array easily using the index.
• If a user wants to store multiple values of the same data type, then the array can
be utilized efficiently.
• An array can also handle complex data structures by storing data in a two-
dimensional array.
• An array is also used to implement other data structures like Stacks, Queues,
Heaps, Hash tables, etc.
• The search process in an array can be done very easily.

7.2 OPERATIONS PERFORMED ON ARRAY:


• Initialization: An array can be initialized with values at the time of declaration
or later using an assignment statement.
• Accessing elements: Elements in an array can be accessed by their index, which
starts from 0 and goes up to the size of the array minus one.
• Searching for elements: Arrays can be searched for a specific element using
linear search or binary search algorithms.
• Sorting elements: Elements in an array can be sorted in ascending or
descending order using algorithms like bubble sort, insertion sort, or quick sort.
• Inserting elements: Elements can be inserted into an array at a specific
location, but this operation can be time-consuming because it requires shifting
existing elements in the array.
• Deleting elements: Elements can be deleted from an array by shifting the
elements that come after it to fill the gap.
• Updating elements: Elements in an array can be updated or modified by
assigning a new value to a specific index.
• Traversing elements: The elements in an array can be traversed in order,
visiting each element once.
These are some of the most common operations performed on arrays. The specific
operations and algorithms used may vary based on the requirements of the problem and the
programming language used.

7.3 APPLICATIONS OF AN ARRAY:


Different applications of an array are as follows:
• An array is used in solving matrix problems.
• Database records are also implemented by an array.
• It helps in implementing a sorting algorithm.
• It is also used to implement other data structures like Stacks, Queues, Heaps,
Hash tables, etc.
• An array can be used for CPU scheduling.
• Can be applied as a lookup table in computers.
• Arrays can be used in speech processing where every speech signal is an array.
• The screen of the computer is also displayed by an array. Here we use a
multidimensional array.
• The array is used in many management systems like a library, students,
parliament, etc.
8.LINKED LIST:
A linked list is a linear data structure in which elements are not stored at contiguous
memory locations. The elements in a linked list are linked using pointers as shown in the
below image:
Types of linked lists:
• Singly-linked list
• Doubly linked list
• Circular linked list
• Doubly circular linked list

8.1 CHARACTERISTICS OF A LINKED LIST:


A linked list has various characteristics which are as follows:
• A linked list uses extra memory to store links.
• During the initialization of the linked list, there is no need to know the size of
the elements.
• Linked lists are used to implement stacks, queues, graphs, etc.
• The first node of the linked list is called the Head.
• The next pointer of the last node always points to NULL.
• In a linked list, insertion and deletion are possible easily.
• Each node of the linked list consists of a pointer/link which is the address of the
next node.
• Linked lists can shrink or grow at any point in time easily.

8.2 OPERATION PERFORMED ON LINKED LIST


A linked list is a linear data structure where each node contains a value and a reference to
the next node. Here are some common operations performed on linked lists:
• Initialization: A linked list can be initialized by creating a head node with a
reference to the first node. Each subsequent node contains a value and a
reference to the next node.
• Inserting elements: Elements can be inserted at the head, tail, or at a specific
position in the linked list.
• Deleting elements: Elements can be deleted from the linked list by updating the
reference of the previous node to point to the next node, effectively removing
the current node from the list.
• Searching for elements: Linked lists can be searched for a specific element by
starting from the head node and following the references to the next nodes until
the desired element is found.
• Updating elements: Elements in a linked list can be updated by modifying the
value of a specific node.
• Traversing elements: The elements in a linked list can be traversed by starting
from the head node and following the references to the next nodes until the end
of the list is reached.
• Reversing a linked list: The linked list can be reversed by updating the
references of each node so that they point to the previous node instead of the
next node.
8.3 APPLICATIONS OF A LINKED LIST:
Different applications of linked lists are as follows:
• Linked lists are used to implement stacks, queues, graphs, etc.
• Linked lists are used to perform arithmetic operations on long integers.
• It is used for the representation of sparse matrices.
• It is used in the linked allocation of files.
• It helps in memory management.
• It is used in the representation of Polynomial Manipulation where each
polynomial term represents a node in the linked list.
• Linked lists are used to display image containers. Users can visit past, current,
and next images.
• They are used to store the history of the visited page.
• They are used to perform undo operations.
9.STACK:
Stack is a linear data structure that follows a particular order in which the operations are
performed. The order is LIFO(Last in first out). Entering and retrieving data is possible
from only one end. The entering and retrieving of data is also called push and pop operation
in a stack. There are different operations possible in a stack like reversing a stack using
recursion, Sorting, Deleting the middle element of a stack, etc.

9.1 CHARACTERISTCS OF A STACK:


Stack has various different characteristics which are as follows:
• Stack is used in many different algorithms like Tower of Hanoi, tree traversal,
recursion, etc.
• Stack is implemented through an array or linked list.
• It follows the Last In First Out operation i.e., an element that is inserted first will
pop in last and vice versa.
• The insertion and deletion are performed at one end i.e. from the top of the
stack.
• In stack, if the allocated space for the stack is full, and still anyone attempts to
add more elements, it will lead to stack overflow.
9.2 APPLICATION OF STACK:
Different applications of Stack are as follows:
• The stack data structure is used in the evaluation and conversion of arithmetic
expressions.
• It is used for parenthesis checking.
• While reversing a string, the stack is used as well.
• Stack is used in memory management.
• The stack is used to convert expressions from infix to postfix.
• The stack is used to perform undo as well as redo operations in word
processors.
• The stack is used in virtual machines like JVM.
• The stack is used in the media players. Useful to play the next and previous
song.
• The stack is used in recursion operations.
9.3 OPERATIONS PERFORMED ON STACK.
A stack is a linear data structure that implements the Last-In-First-Out (LIFO) principle.
Here are some common operations performed on stacks:
• Push: Elements can be pushed onto the top of the stack, adding a new element to
the top of the stack.
• Pop: The top element can be removed from the stack by performing a pop
operation, effectively removing the last element that was pushed onto the stack.
• Peek: The top element can be inspected without removing it from the stack
using a peek operation.
• IsEmpty: A check can be made to determine if the stack is empty.
• Size: The number of elements in the stack can be determined using a size
operation.
10. QUEUE:
Queue is a linear data structure that follows a particular order in which the operations are
performed. The order is First In First Out(FIFO) i.e. the data item stored first will be
accessed first. In this, entering and retrieving data is not done from only one end. An
example of a queue is any queue of consumers for a resource where the consumer that came
first is served first. Different operations are performed on a Queue like Reversing a Queue
(with or without using recursion), Reversing the first K elements of a Queue, etc. A few
basic operations performed In Queue are enqueue, dequeue, front, rear, etc.

Figure 6:

10.1 CHARACTERISTICS OF A QUEUE


The queue has various different characteristics which are as follows:
• The queue is a FIFO (First In First Out) structure.
• To remove the last element of the Queue, all the elements inserted before the
new element in the queue must be removed.
• A queue is an ordered list of elements of similar data types.

10.2 APPLICATIONS OF A QUEUE


Different applications of Queue are as follows:
• Queue is used for handling website traffic.
• It helps to maintain the playlist in media players.
• Queue is used in operating systems for handling interrupts.
• It helps in serving requests on a single shared resource, like a printer, CPU task
scheduling, etc.
• It is used in the asynchronous transfer of data e.g. pipes, file IO, and sockets.
• Queues are used for job scheduling in the operating system.
• In social media to upload multiple photos or videos queue is used.

10.3 OPERATIONS PERFIRMED ON QUEUE-


A queue is a linear data structure that implements the First-In-First-Out (FIFO) principle.
Here are some common operations performed on queues:
• Enqueue: Elements can be added to the back of the queue, adding a new
element to the end of the queue.

• Dequeue: The front element can be removed from the queue by performing a
dequeue operation, effectively removing the first element that was added to the
queue.

• Peek: The front element can be inspected without removing it from the queue
using a peek operation.

• IsEmpty: A check can be made to determine if the queue is empty.

• Size: The number of elements in the queue can be determined using a


size operation.
11. TREE-
A tree is a non-linear and hierarchical data structure where the elements are arranged in a
tree-like structure. In a tree, the topmost node is called the root node. Each node contains
some data, and data can be of any type. It consists of a central node, structural nodes, and
sub-nodes which are connected via edges. Different tree data structures allow quicker and
easier access to the data as it is a non-linear data structure. A tree has various terminologies
like Node, Root, Edge, Height of a tree, Degree of a tree, etc.
There are different types of Tree-like
• Binary Tree,
• Binary Search Tree,
• AVL Tree,
• B-Tree, etc.

11.1 CHARACTERISTICS OF A TREE


The tree has various different characteristics which are as follows:
• A tree is also known as a Recursive data structure.
• In a tree, the Height of the root can be defined as the longest path from the root
node to the leaf node.
• In a tree, one can also calculate the depth from the top to any node. The root
node has a depth of 0.
11.2 APPLICATIONS OF TREE-
Different applications of Tree are as follows:
• Heap is a tree data structure that is implemented using arrays and used to
implement priority queues.
• B-Tree and B+ Tree are used to implement indexing in databases.
• Syntax Tree helps in scanning, parsing, generation of code, and evaluation of
arithmetic expressions in Compiler design.
• K-D Tree is a space partitioning tree used to organize points in K-dimensional
space.
• Spanning trees are used in routers in computer networks.

11.3 OPERATIONS PERFORMED ON TREE-


A tree is a non-linear data structure that consists of nodes connected by edges. Here are
some common operations performed on trees:
• Insertion: New nodes can be added to the tree to create a new branch or to
increase the height of the tree.
• Deletion: Nodes can be removed from the tree by updating the references of the
parent node to remove the reference to the current node.
• Search: Elements can be searched for in a tree by starting from the root node
and traversing the tree based on the value of the current node until the desired
node is found.
• Traversal: The elements in a tree can be traversed in several different ways,
including in-order, pre-order, and post-order traversal.
• Height: The height of the tree can be determined by counting the number of
edges from the root node to the furthest leaf node.
• Depth: The depth of a node can be determined by counting the number of edges
from the root node to the current node.
• Balancing: The tree can be balanced to ensure that the height of the tree is
minimized, and the distribution of nodes is as even as possible.
12. GRAPH-
A graph is a non-linear data structure that consists of vertices (or nodes) and edges. It
consists of a finite set of vertices and set of edges that connect a pair of nodes. The graph is
used to solve the most challenging and complex programming problems. It has different
terminologies which are Path, Degree, Adjacent vertices, Connected components, etc.

12.1 CHARACTERISTICS OF GRAPH-


The graph has various different characteristics which are as follows:
• The maximum distance from a vertex to all the other vertices is considered the
Eccentricity of that vertex.
• The vertex having minimum Eccentricity is considered the central point of the
graph.
• The minimum value of Eccentricity from all vertices is considered the radius of
a connected graph.

12.2 APPLICATIONS OF GRAPH-


Different applications of Graphs are as follows:
• The graph is used to represent the flow of computation.
• It is used in modelling graphs.
• The operating system uses Resource Allocation Graph.
• Also used in the World Wide Web where the web pages represent the nodes.
12.3 OPERATIONS PERFORMED ON GRAPH-

A graph is a non-linear data structure consisting of nodes and edges. Here are some
common operations performed on graphs:
• Add Vertex: New vertices can be added to the graph to represent a new node.
• Add Edge: Edges can be added between vertices to represent a relationship
between nodes.
• Remove Vertex: Vertices can be removed from the graph by updating the
references of adjacent vertices to remove the reference to the current vertex.
• Remove Edge: Edges can be removed by updating the references of the adjacent
vertices to remove the reference to the current edge.
• Depth-First Search (DFS): A graph can be traversed using a depth-first search
by visiting the vertices in a depth-first manner.
• Breadth-First Search (BFS): A graph can be traversed using a breadth-first
search by visiting the vertices in a breadth-first manner.
• Shortest Path: The shortest path between two vertices can be determined using
algorithms such as Dijkstra’s algorithm or A* algorithm.
• Connected Components: The connected components of a graph can be
determined by finding sets of vertices that are connected to each other but not to
any other vertices in the graph.
• Cycle Detection: Cycles in a graph can be detected by checking for back edges
during a depth-first search.
CONCLUSION

My internship experience at Slog Solution Company was invaluable. Through it, I gained

valuable skills, as well as a better understanding of the different aspects of a C++ and Data

Structure . The knowledge I have acquired will benefit me in my future endeavours. During

my internship, I developed my technical skills . I have also made some lasting connections

that will be of great value in my professional life. Overall, I have learned so much from this

experience, which will benefit me immensely in the future.

You might also like