mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 17:12:43 +00:00 
			
		
		
		
	AK: Add insert_{before,after}(iterator, value) to SinglyLinkedList
This commit is contained in:
		
							parent
							
								
									abdd5aa08a
								
							
						
					
					
						commit
						13cf7e76b9
					
				
					 1 changed files with 52 additions and 0 deletions
				
			
		|  | @ -194,6 +194,58 @@ public: | ||||||
|         delete iterator.m_node; |         delete iterator.m_node; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     void insert_before(Iterator iterator, const T& value) | ||||||
|  |     { | ||||||
|  |         auto* node = new Node(value); | ||||||
|  |         node->next = iterator.m_node; | ||||||
|  |         if (m_head == iterator.m_node) | ||||||
|  |             m_head = node; | ||||||
|  |         if (iterator.m_prev) | ||||||
|  |             iterator.m_prev->next = node; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     void insert_before(Iterator iterator, T&& value) | ||||||
|  |     { | ||||||
|  |         auto* node = new Node(move(value)); | ||||||
|  |         node->next = iterator.m_node; | ||||||
|  |         if (m_head == iterator.m_node) | ||||||
|  |             m_head = node; | ||||||
|  |         if (iterator.m_prev) | ||||||
|  |             iterator.m_prev->next = node; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     void insert_after(Iterator iterator, const T& value) | ||||||
|  |     { | ||||||
|  |         if (iterator.is_end()) { | ||||||
|  |             append(value); | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         auto* node = new Node(value); | ||||||
|  |         node->next = iterator.m_node->next; | ||||||
|  | 
 | ||||||
|  |         iterator.m_node->next = node; | ||||||
|  | 
 | ||||||
|  |         if (m_tail == iterator.m_node) | ||||||
|  |             m_tail = node; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     void insert_after(Iterator iterator, T&& value) | ||||||
|  |     { | ||||||
|  |         if (iterator.is_end()) { | ||||||
|  |             append(value); | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         auto* node = new Node(move(value)); | ||||||
|  |         node->next = iterator.m_node->next; | ||||||
|  | 
 | ||||||
|  |         iterator.m_node->next = node; | ||||||
|  | 
 | ||||||
|  |         if (m_tail == iterator.m_node) | ||||||
|  |             m_tail = node; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
| private: | private: | ||||||
|     Node* head() { return m_head; } |     Node* head() { return m_head; } | ||||||
|     const Node* head() const { return m_head; } |     const Node* head() const { return m_head; } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Conrad Pankoff
						Conrad Pankoff