disadvantages of physically linear data structures fixed size not flexible insertion / deletion is...

17
Disadvantages of Physically linear data structures • Fixed size • Not flexible • Insertion / deletion is difficult • Always need boundary conditions • etc

Upload: evelyn-barber

Post on 04-Jan-2016

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Disadvantages of Physically linear data structures Fixed size Not flexible Insertion / deletion is difficult Always need boundary conditions etc

Disadvantages of Physically linear data structures

• Fixed size

• Not flexible

• Insertion / deletion is difficult

• Always need boundary conditions

• etc

Page 2: Disadvantages of Physically linear data structures Fixed size Not flexible Insertion / deletion is difficult Always need boundary conditions etc

• In our previous mapping, the next element happens to be the element at the next index in the array.

• If we can some how tell where the next element is stored, we can eliminate this restriction of placing the next element at the next physical location!

• This gives rise to the notion of logical adjacency as opposed to physical adjacency.

Page 3: Disadvantages of Physically linear data structures Fixed size Not flexible Insertion / deletion is difficult Always need boundary conditions etc

• In that case, in order to access the elements of the list, all we need is a starting point and some mechanism to from one element to the next.

• In other words, we need a starting point and a link form one element to the next.

Page 4: Disadvantages of Physically linear data structures Fixed size Not flexible Insertion / deletion is difficult Always need boundary conditions etc

Treasure Hunt for Kids

• In a party, clues are made up and scattered all over the house. Kids are divided into teams of 1 to 4, depending on how many are at the party. Each clue leads to the next and at the end of the trail is a treasure for the team, for example, chocolates, toys, etc.

Page 5: Disadvantages of Physically linear data structures Fixed size Not flexible Insertion / deletion is difficult Always need boundary conditions etc

• In that case, in order to access the elements of the list, all we need is a starting point and some mechanism to from one element to the next.

• In other words, we need a starting point and a link from one element to the next.

• We can only travel in the direction of the link.

• We have a chain like structure and we can access the elements in the chain by just following the links in the chain.

• Such an organization is known as a linked-list.

Page 6: Disadvantages of Physically linear data structures Fixed size Not flexible Insertion / deletion is difficult Always need boundary conditions etc

Linked-lists• This organization rids us from the

requirement to maintaining the logical as well as physical adjacency.

• Now all we need to maintain is the logical sequences and two logically adjacent elements need to not be physically next to each other.

Page 7: Disadvantages of Physically linear data structures Fixed size Not flexible Insertion / deletion is difficult Always need boundary conditions etc

Linked-lists• We can implement this organization by storing the

information and handle to the next element with the other data as follows:-

 struct element {

handle next; // handle to next list elementdata_type data;

}; handle head; // starting point - handle to first list

elementhead = // initialize head to - the end marker

Page 8: Disadvantages of Physically linear data structures Fixed size Not flexible Insertion / deletion is difficult Always need boundary conditions etc

Linked-lists

• A list node and the resulting list looks like as shown below:

NextData

2 5 8 10 15Head

Page 9: Disadvantages of Physically linear data structures Fixed size Not flexible Insertion / deletion is difficult Always need boundary conditions etc

Linked-lists – Traversal void traverse (handle head)

{

handle current = head;

while ( current != ) {

process data at current;

current = next field of current element

}

}2 5 8 10 15Head

current

Page 10: Disadvantages of Physically linear data structures Fixed size Not flexible Insertion / deletion is difficult Always need boundary conditions etc

Linked-List Add an Element after current element

next field of new element = next field of current;//step 2

void add (handle current, data_type data)

{

handle new_element;

new_element = get a new element; //step 1

data field of new_element = data; //step 1

next field of current = new_element; //step 3

}

Page 11: Disadvantages of Physically linear data structures Fixed size Not flexible Insertion / deletion is difficult Always need boundary conditions etc

Linked-List – Insertion

2 5 8 10 15Head

6Curr

New_Elementnew_element = get a new element;data field of new_element = data;

Step 1

2 5 8 10 15Head

New_Element6

Curr

next field of New_Element =next field of current;

Step 2

2 5 8 10 15Head

New Element

6Curr

next field of current = new_element;

Step 3

Page 12: Disadvantages of Physically linear data structures Fixed size Not flexible Insertion / deletion is difficult Always need boundary conditions etc

• If one link is broken, you loose access to all subsequent elements.

• What happens if you swap the following two lines in add:next field of new element = next field of current; //step 2

next field of current = new_element; //step 3

to next field of current = new_element; //step 2

next field of new element = next field of current; //step 3

Linked-List – Warning: Fragile, Handle Links With Care

Page 13: Disadvantages of Physically linear data structures Fixed size Not flexible Insertion / deletion is difficult Always need boundary conditions etc

2 5 8 10 15Head

7

Curr

New Element

Step 1new_element = get a new elementdata field of new_element = data

2 5 8 10 15Head

7

Curr

New Element next field of current = new_element;Step 2

2 5 8 10 15Head

7

This part is no longer accessible

Curr

New Element

next field of New_Element =next field of current;

Step 3

Page 14: Disadvantages of Physically linear data structures Fixed size Not flexible Insertion / deletion is difficult Always need boundary conditions etc

void delete (handle current)

{

handle temp = next field of current;

next field of current = next filed of next element of current

// same as next field of temp

discard temp

}

Linked-List Delete an Element after current element

Page 15: Disadvantages of Physically linear data structures Fixed size Not flexible Insertion / deletion is difficult Always need boundary conditions etc

Linked List - Deletion

5 6 9 12 15Head

Curr temphandle temp = next field of current;

5 6 9 12 15Head

Curr

tempThis element is no longeraccessible

next field of current =next filed of next element of current

Page 16: Disadvantages of Physically linear data structures Fixed size Not flexible Insertion / deletion is difficult Always need boundary conditions etc

Garbage

5 6 9 12 15Head

Curr

tempThis element is no longeraccessible

• When all access paths to a data object are destroyed but the data object continues to exist, the data object is said to be garbage.

• Garbage is a less serious but still troublesome problem. A data object that has become garbage ties up storage that might otherwise be reallocated for another purpose.

• A buildup of garbage can force the program to terminate prematurely because of lack of available free storage.

Page 17: Disadvantages of Physically linear data structures Fixed size Not flexible Insertion / deletion is difficult Always need boundary conditions etc

Garbage

2 5 8 10 15Head

7

This part is no longer accessible

Curr

New Element