Files
beyond-interviews/analysis/04-Reverse_Linked_List/readme.md

4.5 KiB

Analysis #04 — Reverse Linked List: Academic Exercise

Problem

A classic interview question:

Given a singly linked list:

struct Node {
    int value;
    Node* next;
};

Reverse the list:

1 -> 2 -> 3 -> 4 -> null

into:

4 -> 3 -> 2 -> 1 -> null

using:

  • O(n) time
  • O(1) additional memory

Typical Interview Solution

The standard solution uses three pointers:

Node* previous = nullptr;
Node* current = head;

while(current) {
    Node* next = current->next;

    current->next = previous;

    previous = current;
    current = next;
}

head = previous;

The candidate is expected to produce this solution quickly and correctly.


What This Actually Tests

Despite its popularity, this problem tests a surprisingly narrow set of skills.

Primarily:

  • Pointer manipulation
  • Attention to detail
  • Familiarity with linked lists
  • Prior exposure to a common interview pattern

In many cases, prior exposure matters more than reasoning.

A candidate who has seen the problem twenty times may solve it in under a minute.

A senior engineer with years of production experience may need significantly longer if they have never encountered this specific exercise before.


Why This Is Rare In Real Engineering

The interesting question is:

When was the last time you actually reversed a linked list in production code?

For most engineers, the answer is:

Almost never.

Modern systems rarely use linked lists as a primary data structure.

More commonly you will encounter:

  • vectors
  • deques
  • ring buffers
  • hash tables
  • trees
  • databases
  • message queues

The embedded world is similar.

Typical structures include:

  • circular buffers
  • DMA buffers
  • message queues
  • routing tables
  • state machines

Linked lists certainly exist.

However, fully reversing one is rarely a real business requirement.


The Hidden Assumption

The interview question starts with an assumption:

You already have a linked list.

Real engineering often starts with a different question:

Why is this a linked list in the first place?

That decision is usually far more important than the reversal algorithm itself.


Real-World Equivalent

Finding a true production equivalent is difficult.

Most real systems solve a different problem.

Example 1: Event History Viewer

A user wants to see the newest events first.

A typical engineering solution is:

  • iterate in reverse
  • change presentation logic
  • adjust query ordering

The underlying data structure often remains unchanged.


Example 2: CAN Trace Analysis

Suppose a trace contains millions of CAN frames.

The user wants the newest messages displayed at the top.

Nobody reverses the entire dataset.

Instead:

  • reverse iteration is used
  • the UI changes presentation order
  • indexing structures provide efficient access

The stored data remains exactly as it was.


What Real Engineers Usually Ask

A more practical engineering question would be:

The user wants to view data in reverse order.

Do we actually need to modify the data structure?

This question frequently leads to better solutions.


Better Interview Question

Instead of asking:

Reverse a linked list.

Consider asking:

A system stores ten million records.

Users want to view them in reverse order.

What solution options exist, and what are their trade-offs?

Now the discussion becomes much more interesting:

  • memory usage
  • cache locality
  • ownership
  • indexing
  • performance
  • maintainability
  • user requirements

In other words:

Engineering begins.


Common Mistakes

  • Assuming data must be modified to change presentation order
  • Ignoring alternative data structures
  • Focusing on implementation before understanding requirements
  • Treating algorithmic manipulation as the only valid solution

Key Takeaway

Reverse Linked List is useful as an educational exercise.

It teaches pointer manipulation and careful reasoning about memory.

However, the problem itself rarely appears in production software in its original form.

The real engineering question is usually not:

How do we reverse the list?

Instead it is:

Do we need to reverse it at all?


Project Perspective

Exists in real engineering?

Partially

Linked lists exist.

Complete list reversal is a very uncommon business requirement.

Exists in interview form?

Yes

It remains one of the most common classic coding interview questions.

The exercise is valuable for learning pointer manipulation.

Its usefulness as a predictor of engineering ability is far less obvious.