Professional Documents
Culture Documents
a b c d e
c a e d b
first
pointer (or link) in e is NULL
first
NULL
a b c d e
NULL
a b c d e
?
ChainNode(const T& data)
data
{this->data = data;}
NULL
a b c d e
NULL
a b c d e
NULL
a b c d e
NULL
a b c d e
desiredNode = firstlinklinklinklinklink;
// desiredNode = NULL
return desiredNodedata; // NULL.element
Delete An Element
first
NULL
a b c d e
Delete(0)
deleteNode = first;
first = firstlink;
delete deleteNode;
Delete(2)
first
NULL
b cc
a d e
beforeNode
first get to node just before node to be removed
beforeNode = firstlink;
Delete(2)
first
null
a b c d e
beforeNode
null
a b c d e
beforeNode
NULL
f a b c d e
newNode
NULL
f a b c d e
newNode
first = newNode;
One-Step Insert(0,’f’)
first
NULL
f a b c d e
newNode
a b c d e
beforeNode
• first find node whose index is 2
• next create a node and set its data and link fields
ChainNode<char>* newNode = new ChainNode<char>( ‘f’,
beforeNodelink);
• finally link beforeNode to newNode
beforeNodelink = newNode;
Two-Step Insert(3,’f’)
first newNode
f
NULL
a b c d e
beforeNode
beforeNode = firstlinklink;
beforeNodelink = new ChainNode<char>
(‘f’, beforeNodelink);