# data[].attributes.body
Type of Sorting

Selection

Insertion

Quick

Bubble

Merge

Type of Searching

Linear

Binary

# data[].attributes.body
Sorting and searching

Sorting is a process rearranged data item in certain order, whether in ascending or descending

Types of sorting

1.Selection sort

2. Insertion sort

3. Bubble sort

4. Merge sort

5. Quick sort

Searching

Types of searching

1. Linear search

2. Binary search

# data[].attributes.body
Sorting - Rearrange data

Type -

1. Selection

2. Insertion

3. Quick

4. Bubble

5. Merge

Selection - yg kecil tukar tempat ngan tempat kedudukan yg depan

Insertion - Ada palang (insert masuk dlm)

Bubble - Compare sebelah ii

Merge - bahagikam kpd kecil lepas tuh gabung

Quick - ada pivot

Search

1. Linear

2. Binary

Linear - simple but slow (cari satu per satu)

Binary - cari middle index dan data kena sorted dulu baru boleh buat

First index tambah last index bahagi dgn 2

# data[].attributes.body
Sorting

Type pf sorting:

1. Selection sort

2. Insertion sort

3. Bubble sort

4. Merge sort

5. Quick sort

Searching

Type of searching:

1. Linear search

2. Binary search

# data[].attributes.body
we learned about type of sorting,

selection

insertion

bubble

merge

quick

we learned about searching

it have 2 types

linear and binary

# data[].attributes.body
SORTING & SEARCHING

SORTING= process rearranged

Type of Sorting

1- selection sort (bwa ke depan)

2- Insertion sort (ltak palang)

3- Bubble sort (value sebelah")

4- merge sort (ceraikan,kahwenkan balek)

5- quick sort (pivot can choose)

SEARCHING

Type of searching

1- linear search (search one by one)

2- Binary search (middle index =1st+last/2)

# data[].attributes.body
Topic 6:Sorting

=>process of rearranging data in

ascending or descending order according to number or alphabets

=>Selection Sort

=>Insertion Sort

=>Bubble Sort

=>Merge Sort

=>Quick Sort

Searching

=>Linear Searching

=>Binary Searching

# data[].attributes.body
Types of sorting

•selection sort

•insertion sort

•bubble sort

•merge sort

•quick sort

Types of searching

•Linear search

•Binary search

# data[].attributes.body
Types of Sorting

Insertion sort, Selection sort, Bubble sort, Quick sort and Merge sort.

# data[].attributes.body
TYPE SORTING

selection sort

insert sort

bubble sort

merge sort

quiet sort

TYPE SEARCHING

linear search

binary search

# data[].attributes.body
Types of Sorting:

-Selection

-Insertion

-Merge

-Bubble

-Quick

Two Types of Searching

-Linear

-Binary

# data[].attributes.body
Sort

Linear sort

selection sort

quick sort

insertion sort

bubble sort

search

binary search

linear search

# data[].attributes.body
Type of Sorting
•selection sort
•insertion sort
•bubble sort
•merge sort
•quick sort

Type of Searching
•linear search
•binary search

# data[].attributes.body
Type of Sorting

Selection Sort

Insertion Sort

Bubble Sort

Merge Sort

Quick Sort

Type of Searching

Linear Search

Binary Search

# data[].attributes.body
Sort 5 type:

1. Selection

2. Insertion

3. Bubble

4. Merge

5. Quick

Searching 2 type:

1. Binary

2. Linear

# data[].attributes.body
Bubble sort, quick sort, merge sort, binary search, linear search

# data[].attributes.body
Sorting

Type of sorting

• Selection

• Quick

• Merge

• Bubble

• Insertion

Searching

Linear - Sorted / Unsorted

Binary - Sorted

# data[].attributes.body
Sorting and Searching

Definition of sorting

Type of sorting(Selection,Insertion,Merge,Quick,Bubble)

Searching

Definition of searching

Type of searching(Linear,Binary)

# data[].attributes.body
Type of sorting :

1. Selection sort

2. Insertion sort

3. Bubble sort

4. Merge sort

5. Quick sort

# data[].attributes.body
-Definition of Sorting

A process rearrange data item in certain order whether in ascending or descending order according to alphabet or number.

-Types of Sorting

Selection sort

Insertion sort

Bubble sort

Merge sort

Quick sort

-Definition of Searching

A process of finding the location of an element with a specific value or key within a collection of elements.

- Types of Searching

Linear search

Binary search

# data[].attributes.body
Binary Search

Linear Search

# data[].attributes.body
TREE :

1. ROOT

2. PARENTS

3. CHILDREN

4. SIBLINGS

5. LEAVES

6. HEIGHT

7. DEPHT

PERBEZAAN ANTARA TREE DENGAN BINARY TREE ADALAH :

i) TREE = anak dia blh banyak

ii) BINARY TREE = anak boleh 2 sahaja

JENIS BINARY TREE

1) BINARY SEARCH TREE

Contoh kalau root dia 5..no 4 akan ada disebelah kiri , manakala 6 akan ada di kanan

2) MANIPULATE BINARY TREE

i) INSERT

ii) DELETE

Leaves

One child

Two child

3) TREE TRRAVERSAL

i) pre = kiri

ii) in = bawah

iii) post = kanan

# data[].attributes.body
1.Root-node at the top

2.Parent-have a children

3.Children-have a parent

4.Siblings-more node that have same parent

5.leaf-node in the end

6.Height

7.Depth

Binary tree-can have maximum 2 children

To create binary tree

1.Delete duplicates number

2.letak kanan lebih daripada root letak kiri kalau kurang daripada root

Tree travelsal

1. Preorder

2. Inorder

3. Postorder

# data[].attributes.body
-Root

-parent

-child

-leaf

-sibling

-height

-depth

Binary tree

-siblings

-tree traversal

-insert node

-delete node

-search node

-copy node

Manipulate binary tree

-delete leaf

-delete 1 child

-delete 2 child

Traversal

-preorder

-inorder

-postorder

# data[].attributes.body
Tree

=>Root

=>Parents

=>Children

=>Siblings

=>Leaf

=>Height

=>Depth

Binary Tree

=>Only have 2 child per node

Manipulate Tree

=>Insert node

=>Delete node =>delete leaf

=>delete one child

=>delete two child

=>PREORDER=>

=>INORDER =>

=>POSTORDER =>

# data[].attributes.body
Tree

-Root

-Child

-Parent

-Siblings

-Leaf

-Height

-Depth

Normal Tree and Binary Tree

-Normal tree can have unlimited child

-Binary tree can only have maximum of 2 child

Tree Traversal

-Preorder

-Inorder

-Postorder

Manipulate tree

-3 conditions:

1. node is a leaf

2. node only have one child

3. node have 2 children

# data[].attributes.body
TERMINOLOGIES TREE
-Root
-Parent
-Children
-Siblings
-Leaf
-Height
-Dept

MANIPULATE BINARY TREE
-insert node
-delete node

TREE TRAVERSAL
-preoder
-inoder
-postoder

# data[].attributes.body
Tree

-root -parent -sibling

-child -leaf -height -depth

Tree Treaversel

-preorder(kiri)

-postorder(kanan)

-inorder

Binary search tree

1) delete duplicate num

2) greater num (belah kanan)

3) less num( belah kiri)

# data[].attributes.body
Root - Single node.

Parent - The node which has child.

Children - Node which has a link from parent.

Leaf - Last node from tree diagram without add another node.

# data[].attributes.body
Trees are non-linear structure

Concepts of trees are :

ROOT

Parent

Child

Leaf

SIBLINGS

HEIGHT

DEPTH

# data[].attributes.body
TOPIC 5

KALAU BINARY TREE - MAX ANAK BPLEH 2 SAJE

PARENT - ADA ANAK

CHILD - ADA PARENT

SIBLING- DARI PARENT YANG SAMA

LEAF - XDE ANAK

ROOT - YANG PERTAMA

HEIGHT - KIRA DARI BAWAH KE ATAS

WEIGHT - KIRA DARI ATAS KE BAWAH

NK BUAT BINARY TREE

1. DELETE DUPLICATE

2. CREATE TREE DENGAR KANAN PALING BESAR , KIRI PALING KECIL

ADA 6 OPERATION

1. INSERT

2. DELETE

3. SEARCH

4. COPY TREE

5. TREE TRAVERSAL

6. SIBLINGS

TREE TRAVERSALA ADA 6

1. PREEORDER (KIRI)

2. INORDER (BAWAH)

3. POSTORDER (KANAN)

# data[].attributes.body
1. The Terminologies - root, parent, child, leaf, siblings, height and depth.

2. Binary Tree Operation - siblings, tree traversal (Preorder, Inorder and Postorder), insert node, delete node, search node and copy tree

# data[].attributes.body
root，parent，child， leaf， sibling，height，depth

insert，delete

inorder，preorder，postorder

# data[].attributes.body
Tree

Non- linear structure

Terminologies

Root

Parent

Child

Siblings

Leaf

Height

Depth

Binary tree operation

Siblings

Tree traversal

Insert node

Delete node

Copy tree

# data[].attributes.body
Preorder ◀️

Inorder🔽

Postorder▶️

# data[].attributes.body
Tree, Binary Tree, Binary sewrch tree, Tree traversal preorder, inorder and post order. Tree characteristics : root, parents, siblings, childrens, leaves, height

# data[].attributes.body
•root, siblings, parent, leaf, height, depth

•Tree traversal: preorder, inorder, postorder.

# data[].attributes.body
Tree

=>Non linear

Terminologies

=>Root

=>Parents

=>Childrens

=>Siblings

=>Leaves

=>Height

=>Depth

Binary Tree

=> each node can only have 2 child

Binary Tree Operation

=>Siblings

=>Tree Traversal

=>Insert Node

=>Delete Node

=>Search Node

=>Copy tree

Binary Search Tree

=>Root value => less than (<) place in the left

=>greater or equal (>=) place in the right

Manipulate Binary Tree

=>Insert node

=>Delete node

=>delete leaf

=>delete one child

=>delete two child

Tree Traversal

=>Preorder >>left

=>Inorder >>below/mid

=>Postorder >>right

# data[].attributes.body
Tree

Non-Linear

Root

Parents

Children

Leaf

Siblings

Height

Depth

Binary Tree

Siblings

Tree traversal

Insert

Delete

Search

Copy

# data[].attributes.body
Tree

-Root

-Parents

-Childrens

-Siblings

-Leaves

-Height & depth

normal tree vs binary tree

Traversal

-Preorder

-Inorder

-Postorder

# data[].attributes.body
-Terminology of tree

Root

Parent

Child

Sibling

Leaf

Height

Depth

-Difference between normal tree and binary tree

-Binary tree

-Binary search tree

-Tree traversal

Preorder

Inorder

Postorder

# data[].attributes.body
Tree and binary tree

Insert Delete

Pre In Post order

Root

Parents

Children

Siblings

Leaf

Height

Depth

# data[].attributes.body
terminology of tree

binary tree

binary search tree

difference between normal tree and binary tree

tree traversal

# data[].attributes.body
definition of queue
-non primitive data struct
operation of queue
-enqeue
-dequeue
-isEmpty
-isFull

# data[].attributes.body
Queue = non-primitive data

Concept of queue = FIFO

Enqueue = tambah
Dequeue = delete or buang

Front = dia ada kat depan and dia yang akan dibuang dulu
Rear = dia ada kat belakang and dia yang ditambah

Circular queue :
1. Selagi ada ruang dia blh diisi
2. Ikut arah jam
3. Ada front , rear and count

# data[].attributes.body
-definition queue
-concept of queue
-operation of queue
-enqueue
-dequeue
-isempty()
- isfull()
-front
-rear

# data[].attributes.body
Queue: Non-primitive data

concept of queus:
FIFO- First In first Out

Array
Linked List
Stack

# data[].attributes.body
- Definition of queue
- Concepts in queue
- Operations in queue
=Enqueue
=Dequeue
=Isempty
=Isfull
-Operations in queue (Circular)

# data[].attributes.body
Queue is a non-primitive data structure

Concept of queue is formally known as FIFO(First In First Out)

Operation in Queue
- ENQUEUE - insert
- DEQUEUE - delete or remove
- ISEMPTY() - empty or not
- ISFULL() - full or not

# data[].attributes.body
Queue: non-primitive data structure
-accesible from both ends

Concept: FIFO (First In First Out)

Operations:
-Enqueue
-Dequeue
Checking Op
: Isempty
: Isfull

# data[].attributes.body
Enqueue
•Insert an item into a queue (from the tail)
Dequeue
•Remove an item from queue (from the head)

# data[].attributes.body
FIFO

enqueue and dequeue
operation in array，linked list ，stack and circular queue

# data[].attributes.body
QUEUES

- concept queque
* FIFO (First In First Out)

-operation in queque
* Enqueue (insert)
* Dequeue (removed or delete)

- head (front)
- tail (rear)

# data[].attributes.body
Definition of queue

Concept of queue

Operation in queue linear

Operation in queue circular

# data[].attributes.body
1. Definition Queue

2. Concept of Queues - FIFO

3. Operations in Queue (Linear) - ENQUEUE, DEQUEUE, ISEMPTY and ISFULL

4. Operations in Queues (Circular)

# data[].attributes.body
-definition of queue
-concept of queue
-operation in queue(LINEAR)
-operation in queue (CIRCULAR)

# data[].attributes.body
FIFO ( FIRST IN FIRST OUT )
Implemented with Linked List
Implemente with Circular

# data[].attributes.body
First come first in
Link list
Enqueue 1 - 2 3 4 = 2 3 4 1
Dequeue = 3(f) 4 1(r)
Front , rear

Front rear count for circle
-arah jam

# data[].attributes.body
- Concept of queue
- Queue using linked list
- Queue using stack
- Operation in queue
- Circular queue

# data[].attributes.body
A queue is a linear data structure that follows the FIFO (First-In-First-Out) principle. It means that the first element added to the queue is the first element to be removed.

=>Enqueue
=>Dequeue
=>ISEMPTY()
=>ISFULL()
=>Front/Rear

CIRCULAR QUEUE
=>Clockwise
=>Fill data until its full
=>Front
=>Rear
=>Count

# data[].attributes.body
-Definition Queue
-Concept of queue (FIFO)
-Operation in Queue (Linear)
•Enqueue
•Dequeue
•Isempty
•Isfull
-Operation in Queue (Circular)

# data[].attributes.body
Concept of queue
-FIFO
Operation of queue
-enqueue
-dequeue
-isempty
-isfull

Queue array
Queue linked list
Queue stack
Queue circular

# data[].attributes.body
definition queue
concept of queue
operation in queue
operation in queue(circular)

# data[].attributes.body
Array queue, linked list queue, stack queue, circular queue

# data[].attributes.body
Stack-bertindih
•a homogeneous collection of items of any one type

Concept of stack
-formally knows as LIFO(Last In First Out)

Protocol of stack
-Push
-Pop
-Is Empty
-Is Full

Operation In stack
-Push
-Pop
-Top
-IsEmpty
-IsFull

Potential Problem Occur In Stack
Stack underflow-kurang tapi terbuang lagi
Stack overflow-sudah penuh tapi tambah lagi

# data[].attributes.body
LIST & LINKED LIST

List Operation
Deletion-delete item from list
Insertion-add item into lost
Retrieval-searching & list &display

Linked List
Properties of linked list
Head-first node of the list
Node-have data and next
Data-information
Next-reference of the other node
NULL-the last item (x)

Different link and linked list
List
Static size of list
Easy programming process
Not flexible to rearrange item
Waste extra memory space

Linked list
Dynamic size of list
Complex programming process
Flexible to rearrange item
Not waste extra memory space

Linked list operation
Create node
Create linked list
Check the linked list
Insertion node in the list
Delete node in the list

Type of linked list
Singly linked list
Doubly linked list
Circular linked list
Doubly Circular linked list

# data[].attributes.body
DATA STRUCTURE

Types of Data Structure

Linear -satu garis lurus

-tersusun

-Array,linked list,Queue,Stack

Non linear-multi leveled

-Tak tersusun

-Tree & graph

Dynamic

-berubah

-not fixed

-not waste extra memory

-flexible to rearrange item

Static

-tidak berubah

-saiz is fixed

-Waste extra memory

-Not flexible to rearrange item

Easy to programming prosess

Primitive

Only single value

Do not have special capabilities

Non primitive

To store the group

ARRAY AND DATA STRUCTURE

array

-Fixed size

-static

Single Dimensial Array

Array name [array size];

First index start with 0 not 1

Data Structure

Struct Structure name

{

Data type Member;

} Object / structure variable;

Accessing Structure member

VariableStructure•memberofstructure

# data[].attributes.body
stacks

Homogeneous collection of items of any one type.

Concept

LIFO(Last in First Out)

Operation

PUSH

POP

TOP

ISEMPTY()

ISFULL()

Potential problem

1. Stack underflow

2. Stack overflow

Protocol

Push

Pop

isEmpty

isFull

# data[].attributes.body
1. Definition Stack

2. Concept of Stack - LIFO

3. Last In First Out Protocol - Push, Pop, IsEmpty and IsFull

4. Stack Implementation That Relates in Real Life

5. Operations in Stack - PUSH, POP, TOP, ISEMPTY() and ISFULL()

# data[].attributes.body
Concept of stack

5 stack operations

Issues that can be encountered in stack

Stack linked list and stack array

# data[].attributes.body
Stack: homogenous collection of items of any one type

LIFO (Last In First Out)
Element which is last inserted is accessed first

PUSH
POP
ISEMPTY
ISFULL
TOP

Stack Underflow
Stack Overflow

# data[].attributes.body
Stack has one open end called TOP which used for PUSH and POP

It also formally known as LIFO

There are five operation related stack
- PUSH
- POP
- TOP
- ISEMPTY
- ISFULL

# data[].attributes.body
- Concept of stack
- Operations in stack
- Potential problem
- Operation of stack using array & linked list

# data[].attributes.body
About stack!

1) concept= LIFO(Last In First Out)
2) 4 protocol
- push
- pop
- ISEMPTY
- ISFULL

3) 5 operation
- push(insert)
- pop(delete/remove)
- top (latest value)
- isempty (empty or not)
- isfull (full or not)

4) potential problem
- stack underflow (empty, but try to pop)
- stack overflow (full,but try to push)

# data[].attributes.body
1) concept of stack
( LIFO) Last In First Out
2) 5 operations
- push (insert item)
- pop (remove)
- top ( latest item)
- IsEmpty (check empty or not)
- IsFull (check full or not)
3) we learn about how to convert stack into linked list diagram. :)

# data[].attributes.body
1.Define a stack
2.the concept of stack
3.example of stack in real life
4.Operation of stack
5.potential problem of stack
6.basic operation of stack using array and linked list

# data[].attributes.body
A stack is a linear data structure that follows the LIFO (Last-In-First-Out) principle. It means that the last element added to the stack is the first element to be removed. A stack can be implemented using an array or a linked list.

=>Push
=>Pop
=>Top
=>ISEMPTY()
=>ISFULL()

=>Stack underflow
=>Stack Overflow

# data[].attributes.body
1. Definition Stack
2. Concept of stack (LIFO)
3. Operation in stack (push,pop,top,isempty,isfull)
4. Potential problem occur in stack

# data[].attributes.body
Stack

definiton,concept,operation in stack,checking operation,potiental problem in stack

Stack Array -fix size

Stack Linked List-not fix size

# data[].attributes.body
definition  stack
concept of stack
operations in stack
example stack in real life
basic operation of stack using array

# data[].attributes.body
Operation
Pop, Push,top, isEmpty, isFull

Underflow, overflow

Operation in array and linked lists

# data[].attributes.body
5 operations in a stack
○ Push
Insert an item into a stack.

○Pop
Remove or delete items from stack.

○Top
Holds the current valie at the top of stack.

○IsEmpty
Checking whether the stack is empty or not.

○IsFull
Checking whether the stack is full or not.

# data[].attributes.body
Topic 3 summary
- definition of stack
- concepts of stack
- stack in daily life
- operations in stack
- stack using linked list form

# data[].attributes.body
4 Protocols in LIFO (Last In First Out)
1.PUSH
2.POP
3.IsEMPTY
4.IsFULL

# data[].attributes.body
POP - delete
PUSH - insert
TOP - Point latest value, Hold current value, Point last value
ISEMPTY() - check empty or not
ISFULL() - check full or not

Array - Fixed
Linked list - unlimited

# data[].attributes.body
Stack array
Stack linked list
Operation of stack
-push
-pop
-top
-isempty
-isfull
Stack underflow
Stack overflow

# data[].attributes.body
List, Linked List

operation
-list(insertion, deletion, retrieval, traversal)
-linked list(create node, create linked list, create the linked list: empty, Insertion in the list, deletion in the list)

properties of linked list (head, node, null)

type of linked list
1.  Single linked list
2. doubly linked list
3. Circular linked list
4. Doubly circular linked list

# data[].attributes.body
Operation of Linked List
●Create node
●Create linked list
●Check the linked list
●Insertion node in the list
●Delete node in the list

# data[].attributes.body
Topic 2 summary
List:
- A collection of data element,  components or objects of the same type like a record.
- List is a static data structure so the size is fixed.

Operations in List:
- Insertion
- Deletion
- Retrieval
- Traversal

Linked List:
- A sequence of data structures, which are connected together via links.
- Linked list is a dynamic data structure so the size is not fixed.

Properties of Linked List:
- Head
- NULL
- Node
- Data
- Next

Operations in Linked List:
- Create node
- Create linked list
- Check the linked list: empty
- Insertion node in the list
- Delete node in the list

# data[].attributes.body
There are 4 list operation : Insertion, Deletion, Traversal, Retrieval.

There are 5 operation of linked list : 1.Create Node 2.Create linked list 3.Check linked list :empty 4. Insertion of node in list 5. Deletion of node in list

# data[].attributes.body
F1006

Concepts of list and linked list
List operation
-insertion
-retrieval
-deletion
-traversal

Properties of linked list
-head
-null
-data
-next
-node

Types of linked list
-singly linked list
-doubly linked list
-circular linked list
-doubly circular linked list

# data[].attributes.body
1. Concept of List

2. Operation in List - Insertion, Deletion, Retrieval and Traversal

3. Concept of Linked List

4. Properties of Linked List - Head, NULL, Node, Data and Next

5. Differences between list and linked list

6. Operation of Linked List

7. Type of Linked List - Singly Linked List, Doubly Linked List, Circular Linked List and Doubly Circular Linked List

# data[].attributes.body
Link operation
- Insertion
- Deletion
- Traversal
- Retrieval

Properties
Head , Null , Nod , Data , Next

Operation Linked list
1) Create node
2) Create link list
3) Check if empty
4) Insertion node in list
5) Delete node in the list

Types Link list
-Linear, Circular , Doubly ,

# data[].attributes.body
List
-Collection of data element, component or objects of the same type.
Linked List
-A sequence of data structures , connected together via links.

OPERATION IN LIST:
-INSERTION

-TRAVERSAL
-DELETION
-RETRIEVAL

PROPERTIES

-Head
-NULL
-Node
-Data
-Next
TYPE OF LINKED LIST
1.Singly linked list
2.Doubly linked list
3.Circular linked list
4.Doubly circular linked list

# data[].attributes.body
LIST
=>List is static, size is fixed.
List operation
=>Insertion
=>Deletion
=>Retrieval
=>Traversal
=>Static Size
=>Easy program update
=>waste memory space

LINKED LIST
=>Head, Node, Data, Next, Null
=>Dynamic Size
=>Complex program update
=>Don't waste memory space

TYPES Linked List
=>Singly
=>Doubly
=>Circular
=>Doubly Circular

# data[].attributes.body
Operation list:

-insertion

-deletion

-retrieval

-traversal

Properties linked list

-head

-null

-next

-node

-data

Operation linked list:

-create node

-create linked list

-check linked list:empty

-insertion node dlm list

-delete node dlm list

Type linked list:

-linear

-doubly

-circular

# data[].attributes.body
Link :
- static and fixed
- contoh , array anology
- operation (insertion , deletetion , retrieval and traversal

Linked list :
- dynamic and not fixed
- tak ada maximum size
- properties (head , null , node , data n next)
- operation (create node , create link list , ckeck link list , insertion note in the list and delete or removed)
- type (single , doubly , cirular , doubly cirular)

# data[].attributes.body
1. Operation of list
(Insertion, Deletion, Retrival, Traversal)
2. Properties of Linked list
3. Operation of Linked List
4. Different list and linked list

# data[].attributes.body
Operation of list
Operation of linked list
Properties of linked list
Type of linked list
Difference between list and linked list

# data[].attributes.body
List: collection of data element, components and object of the same type -> like a record

List: Static
Size: Fixed

List operation
-Insertion
-Deletion
-Traversal
-Retrieval

Linked List: sequence of data structure

Properties
-Head
-NULL
- Node
-Data
-Next

Linked List Operation
-Create node
-Create linked list
-Check linked list
-Insertion node
-Deletion

Type of linked list
-Linear Linked List
-Circular Linked List
-Doubly Linked List