

Node recursiveReverse(Node current, previous) With that out of the way, let's take a look at the recursive pseudo-code behind the implementation: Node first, rest Since all of the references are reversed, to complete the reversal, the head must also point to the now first element in the sequence. The termination condition is met as currNode points to null and the head becomes prevNode which is the former last node in the Linked List. This effectively advances the currNode marker through the Linked List and begins the process all over again.Īs the currNode marker moves, it eventually reaches the end and all nodes have been reversed. PrevNode is changed and now points to currNode, switching their placesĬurrNode is changed and now points to nextNode which was previously set to the next node in line for the currNode. NextNode becomes the next node in line for the currNodeĬurrNode.next (the next node in line) points to prevNode, which is currently null Both prevNode and nextNode are pointed to null, and currNode is set to be the current head of the linked list.Ī while loop is begun with a termination condition of the currNode pointing to null, and the switching process begins: To accomplish this, we instantiate three nodes - prevNode, nextNode and currNode.

Let's take a look at the iterative pseudo-code behind the implementation: Node prevNode, currNode, nextNode There are two ways to approach this problem: iterative and recursive. Reverse the given linked list: 1->2->3->4->5 Ultimately, if it passes all the checks, it means that the lists match and represent the same String, returning 0.

While node and node are not null AND ntent is equal to ntent If implemented correctly, using that function on this particular example should produce the following result: -1 Note: "Lexicographically greater" means that a String would appear after the other String based on the dictionary position. -1 - If the second list is lexicographically greater than the first list.1 - If the first list is lexicographically greater than the second list.0 - If the two lists represent the same String.Inserting at the end of the linked list.Inserting at the start of the linked list.There are a few ways someone can ask you to do this: Let's start off with a simple task - inserting a node into a list. Insert an element (6) on the 2nd position in the following list: 2->4->5->3->7->0 Remove the 4th element from the following list: 2->4->5->3->7->0 Inserting and Removing Nodes Interview Question Need help studying for your interview? We recommend trying a service like Daily Coding Problem, which will email you practice questions daily. Circular Linked Lists - Instead of containing a null pointer at the end of the list, the last node in these lists contains a pointer to the first node, making them circular.Īs the linked list is one of the most basic, and important, data structures in computer science, we've compiled a list of common interview questions regarding linked lists for this article.Doubly Linked Lists - This kind of Linked List contains both a pointer to the next, but also a pointer to the previous node in the list.The nodes in Singly Linked Lists contain a pointer to the next node in the list. Singly Linked Lists - A classic linked list, like the one shown in the picture above.A characteristic specific to linked lists is that the order of the nodes isn't dictated by their presence in memory, but rather the pointers that each node has to the next node in the sequence.

Linked Lists are a data structure that represents a linear collection of nodes. If you're interested in reading more about Programming Interview Questions in general, we've compiled a lengthy list of these questions, including their explanations, implementations, visual representations and applications.
