Академический Документы
Профессиональный Документы
Культура Документы
lists
list or
head
rear or
tail
current
info
list
next
new element
E.G.M. Petrakis
lists
list or
head
list
current
rear or
tail
Insertion at current
position
new element
E.G.M. Petrakis
lists
list or
head
list or
head
rear or
tail
current
deleted
element
E.G.M. Petrakis
lists
list or
head
list or
head
rear or
tail
current
Deletion at current
position
deleted
element
E.G.M. Petrakis
lists
Terminology
empty: contains no elements
length: number of elements in list
head, or list: pointer to the beginning
of the list
tail: pointer to the last element
current: pointer to current element
ordered: elements in ascending or
descending order
E.G.M. Petrakis
lists
Operations
E.G.M. Petrakis
lists
ADT List
interface List {
public void clear();
public void insert(Object item);
public void append(Object item);
public Object remove();
public void setFirst();
public void next();
public void prev();
public int length();
public void setPos(int pos);
public void setValue(Object val);
public Object currValue();
public boolean isEmpty();
public boolean isInList();
}
E.G.M. Petrakis
lists
Iteration
Iterate through the whole list : MyList
for (MyList.first( ); MyList.isInList( ); MyList.next( ))
DoSomething(MyList.currValue( ));
E.G.M. Petrakis
lists
List Implementations
Array-based: very fast
the elements are stored in array
static: actual number of elements less than size
allocated
E.G.M. Petrakis
lists
10
E.G.M. Petrakis
lists
11
AList() { setup(defaultSize); }
AList(int sz) { setup(sz); }
// Constructor
// Constructor
// Do initializations
E.G.M. Petrakis
// Create listArray
lists
12
E.G.M. Petrakis
lists
13
public
public
public
public
public
public
E.G.M. Petrakis
lists
14
1
8
9
11
26
11
10 11 12
nodes
5 10
12 26 0
11
NULL
13
E.G.M. Petrakis
lists
15
List 1
31
List 2
17
26
List 3
31
19
32
List 4
18
13
E.G.M. Petrakis
14
lists
37
11
12
15
16
List 4
List 2
26
11
10
16
25
17
13
19
19
14
13
10
22
12
31
13
16
37
24
17
12
32
21
22
15
List 3
11
14
15
List 1
18
19
20
23
E.G.M. Petrakis
24
12
25
18
lists
0
6
17
E.G.M. Petrakis
lists
18
E.G.M. Petrakis
lists
19
void clear( ) {}
void insert(Object it) {}
void append(Object it) {}
Object remove( ) {}
void setFirst( ) {}
void prev( ) {}
void next( ) {}
int length( ) {}
lists
20
Dynamic Memory
Allocates memory for new elements as needed
Each node is a distinct object
// A linked-list node
// Object for this node
// Pointer to next node
// Constructor
class Link {
E.G.M. Petrakis
lists
21
lists
22
23
E.G.M. Petrakis
lists
24
Comparison
Array-Based Lists:
Linked Lists:
E.G.M. Petrakis
lists
25
E.G.M. Petrakis
lists
26
lists
27
current
E.G.M. Petrakis
lists
28
current
E.G.M. Petrakis
lists
29
Insertion
curr.setNext(new DLink(it, curr.next(), curr));
if (curr.next().next() != null)
curr.next().next().setPrev(curr.next());
if (tail == curr)
// Appended new Object
tail = curr.next();
E.G.M. Petrakis
lists
30
E.G.M. Petrakis
lists
31