VOOZH about

URL: https://www.geeksforgeeks.org/dsa/form-a-rectangle-from-boundary-elements-of-matrix-using-linked-list/

⇱ Form a Rectangle from boundary elements of Matrix using Linked List - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Form a Rectangle from boundary elements of Matrix using Linked List

Last Updated : 23 Jul, 2025

Given a Matrix grid[][] of size NxM where N is number of rows and M is number of columns. The task is to form a rectangle from boundary elements of grid[][] using linked list having four pointers namely prev, next, top and bottom. Print the final linked list. 

Examples:

Input: A = [[13, 42, 93, 88], 
                  [26, 38, 66, 42], 
                 [75, 63, 78, 12]]
Output: 13 42 93 88 42 12 78 63 75 26

Explanation:  
 

👁 Image


1. Make A[0][0] and head node
2. Traverse through 0th row and create node for each element and connect them through next pointer.
3. Traverse through (m-1)th column and create node for each element and connect them through bottom pointer.
4. Traverse through (n-1)th row and create node for each element and connect them through prev pointer.
5. Traverse through 0th column and create node for each element and connect them through top pointer.
6. Step 2, 3, 4, 5 is repeated till temp. The top become equal to head.

Input: A = [[1, 2, 3]
                  [8, 9, 4]
                 [7, 6, 5]]
Output: 1 2 3 4 5 6 7 8

Approach: This problem can be solved by Performing boundary traversal of matrix and creating nodes for each element and link them using next, prev, bottom or top and create a linked list. 

Follow the steps below:

Step 1: Make grid[0][0] as the head of the Linked list and initialize temp as the head.
Step 2: Traverse through the first row from j=1 to j=m-1 where i=0 and create a node for each element and link them through the next pointer.
Step 3: Traverse through the last column from i=0 to i=n-1 where j=m-1 and create a node for each element and link them through a bottom pointer.
Step 4: Traverse through the last row from j=m-1 to j=0 where i=n-1 and create a node for each element and link them through the prev pointer.
Step 5: Traverse through the first column from i=n-1 to i=0 where j=0 and create a node for each element and link them through the top pointer.
Step 6: Step 2, 3, 4, 5 is repeated till temp.top becomes equal to head.
Step 7: Print the required Linked List.

Below is the implementation of the above algorithm. 


Output
13 42 93 88 42 12 78 63 75 26 

Time Complexity: O(N*M) 
Auxiliary Space: O(N*M)

Comment