extension of linked list
DESCRIPTION
Extension of linked list. Zhen Jiang West Chester University [email protected]. Outline. Double Cyclic Linked List Queue & Stack Binary Tree Expression Tree Networks. (Single) Linked list. node. NULL. Double Cyclic Linked List. node. NULL. Queue. node. - PowerPoint PPT PresentationTRANSCRIPT
Outline Double Cyclic Linked List Queue & Stack Binary Tree Expression Tree Networks
(Single) Linked list
NULL
node
Double Cyclic Linked List
NULL
node
Queue
NULL
node
Insert a new item at the head
Delete an item from the tail
Stack
NULL
node
Insert a new item at the head
Delete an item from the head
Implementation of stack with template http://www.cs.wcupa.edu/~zjiang/
csc513_template.ppt
Use of Stack Project 5
Reading information via file http://www.cs.wcupa.edu/~zjiang/
530_proj5_file.pdf Three stacks, one for each {}, (), and [].
Left => push/insert Right => pop/delete the closest left symbol
Evaluation of (postfix) expression
5 4 + 3 * 5 4 3 + * 5 4 * 3 + 5 4 3 * +
(5 + 4) * 3 5 * (4 + 3) 5 * 4 + 3 5 + (4 + 3)
Read the formula from left to right Number => push Binary operator => 2 pops
Right number popped first Then, left number popped. Calculate result = <second> op <first> Push (result)
Until expression reading finishes and only one (final) result is left in stack
Disorder of the link connection
NULL
node
Tree Definition
Each node u has n(u) children Considering the parent-child
relationship is undirected, there is no cycle in a tree
There is only one node called the root in the entire tree. It has children only but no parent.
Binary Tree Definition
Definition of tree (3) For each node u, n(u)<3 L<S<R
< is a relation between any two nodes in the tree
Constructor Assume each node has a number
value so that we have the relation < Given a sequence: n1, n2, n3, …, ni,
… n1 -> set root unit (node) ni -> call insertion(node, ni)
Insertion(p, n) If (p->v < n)
If p->R not empty Insertion (p->R, n)
else Set p->R
If (p->v > n) Similar to the case (p->v < n)
Travel (print out all node values) Infix travel, L->S->R Postfix travel, L->R->S Prefix travel, S->L->R
Infix travel If node is not empty, Infix_print
(node); Infix_print (p)
If (p->L) infix_print(p->L) Cout << p->v If(p->R) infix_print (p->R)
Search If node is not empty, Search (node,
n); Search (p, n)
If (p->v == n) return true If (p->v < n) return Search (p->R, n) If (p->v > n) return Search (p->L, n) Terminating condition: if (!p) return false
Deletion Delete the root node
If node is empty If node->L (or node->R) is empty
tmp = node->R (or node->L) Delete node node = tmp
If neither node->L nor node->R is empty If node->L->R is empty
node -> v = node->L->v tmp = node->L->L Delete node->L node->L = tmp
Else tmp = node->L While (tmp->R->R) tmp = tmp->R node->v = tmp->R->V tmp2 = tmp->R->L Delete tmp->R tmp->R = tmp2
See if you can find a certain value in the tree and delete it!
Delete (n) If (node->v == n) delete node; If (node->v < n)
deletion (node, node-R, n, 1) If (node->v > n)
deletion (node, node-L, n, 0)
Deletion (parent, start, value, flag) If start is empty // not found, done! If start->v < value If start->v > value Else //start->v == value
If both start->L and start->R are empty Delete start If (flag)Parent ->R = NULL Else Parent -> L = NULL
If start->L (or start->R) is empty
Deletion (parent, start, value, flag) Else //start->v == value
If start->L (or start->R) is empty If (flag) Parent-R = Start->R (or start->L) Else Parent->L = Start->R Delete start
If neither start->L nor start->R is empty
If start->L->R is empty start -> v = start->L->v tmp = start->L->L Delete start->L start->L = tmp
Else tmp = start->L While (tmp->R->R) tmp = tmp->R start->v = tmp->R->V tmp2 = tmp->R->L Delete tmp->R tmp->R = tmp2
Expression Tree Definition
Definition of binary tree (5) All leaves are numbers, and all
intermediate nodes are operators To simplify the discussion in this
class, we use binary operators only.
Evaluation If node is not empty, R_E(node); R_E(p)
If p->v is not digit Lvalue = R_E(p->L); Rvalue = R_E(p->R); Return Lvalue <p->v> Rvalue;
Else Return p->v
Print Postfix
Construction From infix format http://www.cs.wcupa.edu/~zjiang/
csc530_expressionTree.htm
Network Graph table
http://www.cs.wcupa.edu/~zjiang/csc530_graph_table.pdf
Depth first search http://www.cs.wcupa.edu/~zjiang/csc530_depth.pdf
Width first search http://www.cs.wcupa.edu/zjiang/csc530_width.pdf
Shortest path construction http://www.cs.wcupa.edu/~zjiang/
csc530_shortestpath.pdf
Spanning (travel) Project 7