master

Learning Profile for Assignment #1 - Question #2b - Computer Science 272: Data Structures and Algorithms

Name: Mo Khan Student ID: 3431709

Problem Statement

Swap two adjacent elements in a list by adjusting only the links (and not the data) using doubly-linked list.

Description of the Code

The swap() function operates in constant time by adjusing the next and previous pointers for the target nodes to swap. It also updates any pointers for neighbor nodes that need to be updated as well.

Errors and Warnings

モ make run_test
mkdir build
clang    -c -o build/doubly_linked_list.o doubly_linked_list.c
clang    -c -o build/doubly_linked_list_test.o doubly_linked_list_test.c
clang build/doubly_linked_list.o build/doubly_linked_list_test.o -lcgreen -o build/test
Running "main" (22 tests)...
  "swap_doubly_linked_list_tests": 164 passes in 7ms.
  Completed "main": 164 passes in 7ms.

Sample Input and Output

The program defined in main.c adds 10 randomly generated numbers to a doubly linked list then swaps it pair of nodes from index 0 to the end of the list.

モ make run
clang    -c -o build/main.o main.c
clang build/doubly_linked_list.o build/main.o -o build/program
./build/program
=== COMP-272 - Assignment 1 - Question 2b ===
        [ (nil<83>86) (83<86>77) (86<77>15) (77<15>93) (15<93>35) (93<35>86) (35<86>92) (86<92>49) (92<49>21) (49<21>nil) ]
swap: 0,1
        [ (nil<86>83) (86<83>77) (83<77>15) (77<15>93) (15<93>35) (93<35>86) (35<86>92) (86<92>49) (92<49>21) (49<21>nil) ]
swap: 2,3
        [ (nil<86>83) (86<83>15) (83<15>77) (15<77>93) (77<93>35) (93<35>86) (35<86>92) (86<92>49) (92<49>21) (49<21>nil) ]
swap: 4,5
        [ (nil<86>83) (86<83>15) (83<15>77) (15<77>35) (77<35>93) (35<93>86) (93<86>92) (86<92>49) (92<49>21) (49<21>nil) ]
swap: 6,7
        [ (nil<86>83) (86<83>15) (83<15>77) (15<77>35) (77<35>93) (35<93>92) (93<92>86) (92<86>49) (86<49>21) (49<21>nil) ]
swap: 8,9
        [ (nil<86>83) (86<83>15) (83<15>77) (15<77>35) (77<35>93) (35<93>92) (93<92>86) (92<86>21) (86<21>49) (21<49>nil) ]

Discussion