@@ -457,6 +457,16 @@ class forward_lists{
457
457
head->next = prev;
458
458
}
459
459
public:
460
+ /* *
461
+ * @brief Method Assign
462
+ * Assign dipakai untuk mereplace list saat ini dengan list baru
463
+ * overload method assign
464
+ * assign(n,value) ->insert value sebanyak n kali
465
+ * assign(initializer_list<T>)->replace value pada initializer list ke list saat ini
466
+ * assign(iterator begin,iterator end) ->replace mulai dari iterator begin sampai sebelum iterator end
467
+ *
468
+ * @details Time complexity O(n),Space Complexity O(n)
469
+ */
460
470
void assign (std::size_t n,const T& value){
461
471
clear ();
462
472
Node* curr = head;
@@ -499,6 +509,50 @@ class forward_lists{
499
509
++itr1;
500
510
}
501
511
}
512
+ public: // slice after
513
+ /* *
514
+ * @brief slice after
515
+ * method untuk memindahkan node dari satu list ke list lain
516
+ * tanpa menyalin data,tetapi move node pointer
517
+ *
518
+ * @details Time complexity O(1),Space Complexity O(1)
519
+ */
520
+ void splice_after (const Iterator pos,forward_lists& others,const Iterator It){
521
+ Node* src = It.get_raw ();
522
+ Node* moved = src->next ;
523
+ src->next = moved->next ; // src->next = src->next->next
524
+
525
+ Node* dest = pos.get_raw ();
526
+ moved->next = dest->next ; // hubungkan ke list tujuan
527
+ dest->next = moved;
528
+ others.size --;
529
+ size++;
530
+ }
531
+ void splice_after (const Iterator pos,forward_lists&& others,const Iterator It){
532
+ Node* src = It.get_raw ();
533
+ Node* moved = src->next ;
534
+ src->next = moved->next ; // src->next = src->next->next
535
+
536
+ Node* dest = pos.get_raw ();
537
+ moved->next = dest->next ; // hubungkan ke list tujuan
538
+ dest->next = moved;
539
+ others.size --;
540
+ size++;
541
+ }
542
+ void splice_after (const Iterator pos,forward_lists& others){
543
+ Node* src = pos.get_raw ();// pos object saat ini
544
+ Node* begin = others.begin (); // begin object lain
545
+ Node* end = others.end ();
546
+ // hubungkan node terakhir ke object saat ini
547
+ Node* moved = src->next ; // object saat ini
548
+ end->next = moved; // end->next = src->next
549
+ // hubungkan ke list tujuan
550
+ Node* curr = src; // curr menunjuk src
551
+ curr->next = begin;// curr next adalah begin dari object lain
552
+ // moved->next = begin; //object saat ini
553
+ size = others.size ;
554
+ others.size = 0 ;
555
+ }
502
556
public:
503
557
/* *
504
558
* @brief method untuk print semua node list
0 commit comments