C DS Basics
C DS Basics
com/tutorial/about-dsa/3/295
Stack
Queue
Linked List
Tree
Graph
etc.
Non-Linear:
Homogeneous:
Non-Homogeneous:
Static:
Static data structures are those whose sizes and structures associated memory
locations are fixed, at compile time.
Example: Array
Dynamic:
Dynamic structures are those which expands or shrinks depending upon the
program need and its execution. Also, their associated memory locations
changes.
Example: Linked List created using pointers
Array
Arrays are a very simple data structure and may be thought of as a list of a
fixed length. Arrays are nice because of their simplicity, and are well suited for
situations where the number of data items is known (or can be
programmatically determined). Suppose you need a piece of code to calculate
the average of several numbers. An array is a perfect data structure to hold the
individual values, since they have no specific order, and the required
computations do not require any special handling other than to iterate
through all of the values. The other big strength of arrays is that they can be
accessed randomly, by index. For instance, if you have an array containing a
list of names of students seated in a classroom, where each seat is numbered 1
through n, then studentName[i] is a trivial way to read or store the name of
the student in seat i.
Linked Lists
A linked list is a data structure that can hold an arbitrary number of data items
and can easily change size to add or remove items. A linked list, at its simplest,
is a pointer to a data node. Each data node is then composed of data (possibly
a record with several data values), and a pointer to the next node. At the end of
the list, the pointer is set to null.
Queues
A queue is a data structure that is best described as "first in, first out". A real-
world example of a queue is people waiting in line at the bank. As each person
enters the bank, he or she is "enqueued" at the back of the line. When a teller
becomes available, they are "dequeued" at the front of the line.
Priority Queues
In a typical breadth-first search (BFS) algorithm, a simple queue works great
for keeping track of what states have been visited. Since each new state is one
more operational step than the current state, adding new locations to the end
of the queue is sufficient to ensure that the quickest path is found first.
However, the assumption here is that each operation from one state to the
next is a single step.
Stacks
Stacks are, in a sense, the opposite of queues, in that they are described as
"last in, first out". The classic example is the pile of plates at the local buffet.
The workers can continue to add clean plates to the stack indefinitely, but
every time, a visitor will remove from the stack the top plate, which is the last
one that was added.
Trees
Trees are a data structure consisting of one or more data nodes. The first node
is called the "root", and each node has zero or more "child nodes". The
maximum number of children of a single node, and the maximum depth of
children are limited in some cases by the exact type of data represented by the
tree.
Binary Trees
A special type of tree is a binary tree. A binary tree also happens to be one of
the most efficient ways to store and read a set of records that can be indexed
by a key value in some way. The idea behind a binary tree is that each node
has, at most, two children.
Hash Tables
Hash tables are a unique data structure and are typically used to implement a
"dictionary" interface, whereby a set of keys each has an associated value. The
key is used as an index to locate the associated values. This is not unlike a
classical dictionary, where someone can find a definition (value) of a given
word (key).