GeeksforGeeks App
Open App
Browser
Continue

Forward List in C++ | Set 2 (Manipulating Functions)

Forward List in C++ | Set 1 (Introduction and Important Functions) More functions are discussed in this article Some of the operations other than insertions and deletions that can be used in forward lists are as follows :

1. merge() :- This function is used to merge one forward list with other. If both the lists are sorted then the resultant list returned is also sorted.

2. operator “=” :- This operator copies one forward list into other. The copy made in this case is deep copy.

CPP

 `// C++ code to demonstrate the working of``// merge() and operator=``#include``#include``using` `namespace` `std;` `int` `main()``{    ``    ``// Initializing 1st forward list``    ``forward_list<``int``> flist1 = {1, 2, 3};``    ` `    ``// Declaring 2nd forward list``    ``forward_list<``int``> flist2;``    ` `    ``// Creating deep copy using "="``    ``flist2 = flist1;``    ` `    ``// Displaying flist2``    ``cout << ``"The contents of 2nd forward list"``            ``" after copy are : "``;``    ``for` `(``int` `&x : flist2)``        ``cout << x << ``" "``;``    ``cout << endl;``    ` `    ``// Using merge() to merge both list in 1``    ``flist1.merge(flist2);``    ` `    ``// Displaying merged forward list``    ``// Prints sorted list``    ``cout << ``"The contents of forward list "``            ``"after merge are : "``;``    ``for` `(``int` `&x : flist1)``        ``cout << x << ``" "``;``    ``cout << endl;``    ` `    ``return` `0;    ``}`

Output:

```The contents of 2nd forward list after copy are : 1 2 3
The contents of forward list after merge are : 1 1 2 2 3 3 ```

Time Complexity: O(1)

Auxiliary Space: O(1)
3. sort() :- This function is used to sort the forward list.

4. unique() :- This function deletes the multiple occurrences of a number and returns a forward list with unique elements. The forward list should be sorted for this function to execute successfully.

CPP

 `// C++ code to demonstrate the working of``// sort() and unique()``#include``#include // for sort() and unique()``using` `namespace` `std;` `int` `main()``{``    ``// Initializing 1st forward list``    ``forward_list<``int``> flist1 = {1, 2, 3, 2, 3, 3, 1};` `    ``// Sorting the forward list using sort()``    ``flist1.sort();` `    ``// Displaying sorted forward list``    ``cout << ``"The contents of forward list after "``            ``"sorting are : "``;``    ``for` `(``int` `&x : flist1)``        ``cout << x << ``" "``;``    ``cout << endl;` `    ``// Use of unique() to remove repeated occurrences``    ``flist1.unique();` `    ``// Displaying forward list after using unique()``    ``cout << ``"The contents of forward list after "``            ``"unique operation are : "``;``    ``for` `(``int` `&x : flist1)``        ``cout << x << ``" "``;``    ``cout << endl;` `    ``return` `0;``}`

Output:

```The contents of forward list after sorting are : 1 1 2 2 3 3 3
The contents of forward list after unique operation are : 1 2 3 ```

Time Complexity: O(1)

Auxiliary Space: O(1)

5. reverse() :- This function is used to reverse the forward list.

6. swap() :- This function swaps the content of one forward list with other.

CPP

 `// C++ code to demonstrate the working of``// reverse() and swap()``#include``#include // for reverse() and swap()``using` `namespace` `std;``int` `main()``{``    ``// Initializing 1st forward list``    ``forward_list<``int``> flist1 = {1, 2, 3,};` `    ``// Initializing 2nd forward list``    ``forward_list<``int``> flist2 = {4, 5, 6};` `    ``// Using reverse() to reverse 1st forward list``    ``flist1.reverse();` `    ``// Displaying reversed forward list``    ``cout << ``"The contents of forward list after"``            ``" reversing are : "``;``    ``for` `(``int` `&x : flist1)``        ``cout << x << ``" "``;``    ``cout << endl << endl;` `    ``// Displaying forward list before swapping``    ``cout << ``"The contents of 1st forward list "``            ``"before swapping are : "``;``    ``for` `(``int` `&x : flist1)``        ``cout << x << ``" "``;``    ``cout << endl;``    ``cout << ``"The contents of 2nd forward list "``            ``"before swapping are : "``;``    ``for` `(``int` `&x : flist2)``        ``cout << x << ``" "``;``    ``cout << endl;` `    ``// Use of swap() to swap the list``    ``flist1.swap(flist2);` `    ``// Displaying forward list after swapping``    ``cout << ``"The contents of 1st forward list "``            ``"after swapping are : "``;``    ``for` `(``int` `&x : flist1)``        ``cout << x << ``" "``;``    ``cout << endl;` `    ``cout << ``"The contents of 2nd forward list "``            ``"after swapping are : "``;``    ``for` `(``int` `&x : flist2)``        ``cout << x << ``" "``;``    ``cout << endl;` `    ``return` `0;``}`

Output:

```The contents of forward list after reversing are : 3 2 1

The contents of 1st forward list before swapping are : 3 2 1
The contents of 2nd forward list before swapping are : 4 5 6
The contents of 1st forward list after swapping are : 4 5 6
The contents of 2nd forward list after swapping are : 3 2 1 ```

Time Complexity: O(1)

Auxiliary Space: O(1)

7. clear() :- This function clears the contents of forward list. After this function, the forward list becomes empty.

8. empty() :- This function returns true if the list is empty otherwise false.

CPP

 `// C++ code to demonstrate the working of``// clear() and empty()``#include``#include // for clear() and empty()``using` `namespace` `std;``int` `main()``{    ``    ``// Initializing forward list``    ``forward_list<``int``> flist1 = {1, 2, 3,};``    ` `    ``// Displaying forward list before clearing``    ``cout << ``"The contents of forward list are : "``;``    ``for` `(``int` `&x : flist1)``        ``cout << x << ``" "``;``    ``cout << endl;``    ` `    ``// Using clear() to clear the forward list``    ``flist1.clear();``    ` `    ``// Displaying list after clear() performed``    ``cout << ``"The contents of forward list after "``        ``<< ``"clearing are : "``;``    ``for` `(``int` `&x : flist1)``        ``cout << x << ``" "``;``    ``cout << endl;``    ` `    ``// Checking if list is empty``    ``flist1.empty() ? cout << ``"Forward list is empty"` `:``                    ``cout << ``"Forward list is not empty"``;``    ` `    ``return` `0;    ``}`

Output:

```The contents of forward list  are : 1 2 3
The contents of forward list after clearing are :
Forward list is empty```

Time Complexity: O(1)

Auxiliary Space: O(1)