feat: Add XOR-based doubly linked list mode for memory efficiency#709
Open
Sreevarsh-Mahesh wants to merge 1 commit intocodezonediitj:mainfrom
Open
feat: Add XOR-based doubly linked list mode for memory efficiency#709Sreevarsh-Mahesh wants to merge 1 commit intocodezonediitj:mainfrom
Sreevarsh-Mahesh wants to merge 1 commit intocodezonediitj:mainfrom
Conversation
Implements issue codezonediitj#692 by adding an optional 'xor' mode to DoublyLinkedList that uses XOR of adjacent node addresses to reduce memory usage from 2 pointers to 1 pointer per node. Features: - Add mode parameter ('standard' or 'xor') to DoublyLinkedList.__new__ - Implement XOR node structure with links=['both'] - Maintain id_to_node dictionary for pointer dereferencing - Refactor all insert/extract methods for XOR mode support - Override __getitem__, __str__, and search for XOR traversal - Maintain full backward compatibility with standard mode Testing: - Add comprehensive test suite for XOR mode - Test parity between standard and XOR modes - Test edge cases (empty, single, large lists) - All 114 existing tests still pass Fixes codezonediitj#692
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
References to other Issues or PRs or Relevant literature
Fixes #692
Brief description of what is fixed or changed
This PR implements a memory-efficient XOR-based doubly linked list mode for
DoublyLinkedList.What is XOR Linked List?
An XOR linked list stores a single pointer containing the XOR of adjacent node addresses instead of two separate pointers, reducing memory usage while maintaining bidirectional traversal capability.
Implementation:
modeparameter toDoublyLinkedList.__new__()with options:'standard'(default) or'xor'links=['both']to store XOR of adjacent node IDs_id_to_nodedictionary for node reference tracking (simulates pointer dereferencing in Python)insert_after(),insert_before(),insert_at(),extract()__getitem__(),__str__(), andsearch()for XOR traversal supportTesting:
test_DoublyLinkedList_XOR()- Full feature test matching standard mode behaviortest_DoublyLinkedList_XOR_vs_Standard()- Parity test between modestest_DoublyLinkedList_XOR_EdgeCases()- Edge cases (empty, single, large lists)test_DoublyLinkedList_InvalidMode()- Error handlingUsage Example: