# YOU CAN DOWNLOAD 200+ SUBJECTS PDF BOOK FOR COMPETITIVE EXAMINATIONS

## Data Structure Questions and Answers-Singly Linked List

Question 1 [CLICK ON ANY CHOICE TO KNOW THE RIGHT ANSWER] |

Which of the following is not a disadvantage to the usage of array?

Fixed size | |

You know the size of the array prior to allocation | |

Insertion based on position | |

Accessing elements at specified positions |

Question 1 Explanation:

Array elements can be accessed in two steps. First, multiply the size of the data type with the specified position, second, add this value to the base address. Both of these operations can be done in constant time, hence accessing elements at a given index/position is faster.

Question 2 [CLICK ON ANY CHOICE TO KNOW THE RIGHT ANSWER] |

What is the time complexity of inserting at the end in dynamic arrays?

O(1) | |

O(n) | |

O(logn) | |

Either O(1) or O(n) |

Question 2 Explanation:

Depending on whether the array is full or not, the complexity in dynamic array varies. If you try to insert into an array which is not full, then the element is simply stored at the end, this takes O(1) time. If you try to insert into an array which is full, first you will have to allocate an array with double the size of the current array and then copy all the elements into it and finally insert the new element, this takes O(n) time.

Question 3 [CLICK ON ANY CHOICE TO KNOW THE RIGHT ANSWER] |

What is the time complexity to count the number of elements in the linked list?

O(1) | |

O(n) | |

O(logn) | |

None of the mentioned |

Question 3 Explanation:

To count the number of elements, you have to traverse through the entire list, hence complexity is O(n).

Question 4 [CLICK ON ANY CHOICE TO KNOW THE RIGHT ANSWER] |

Which of the following performs deletion of the last element in the list? Given below is the Node class.

class Node { protected Node next; protected Object ele; Node(Object e, Node n) { ele = e; next = n; } public void setNext(Node n) { next = n; } public void setEle(Object e) { ele = e; } public Node getNext() { return next; } public Object getEle() { return ele; } } class SLL { Node head; int size; SLL() { size = 0; } }

public Node removeLast() { if(size == 0) return null; Node cur; Node temp; cur = head; while(cur.getNext() != null) | |

public void removeLast() { if(size == 0) return null; Node cur; Node temp; cur = head; while(cur != null) { temp = cur | |

public void removeLast() { if(size == 0) return null; Node cur; Node temp; cur = head; while(cur != null) { cur = | |

public void removeLast() { if(size == 0) return null; Node cur; Node temp; cur = head; while(cur.getNext() != null |

Question 4 Explanation:

Since you have to traverse to the end of the list and delete the last node, you need two reference pointers. 'cur' to traverse all the way and find the last node, and 'temp' is a trailing pointer to 'cur'. Once you reach the end of the list, setNext of 'temp' to null, 'cur' is not being pointed to by any node, and hence it is available for garbage collection.

Question 5 [CLICK ON ANY CHOICE TO KNOW THE RIGHT ANSWER] |

What is the functionality of the following code?

public void function(Node node) { if(size == 0) head = node; else { Node temp, cur; for(cur = head; (temp = cur.getNext())!=null; cur = temp); cur.setNext(node); } size++; }

Inserting a node at the beginning of the list | |

Deleting a node at the beginning of the list | |

Inserting a node at the end of the list | |

Deleting a node at the end of the list |

Question 5 Explanation:

The for loop traverses through the list and then inserts a new node as cur.setNext(node);

There are 5 questions to complete.