Commit 8ef8f0e
Changed files (3)
src
01
src/01/02a/main.c
@@ -1,6 +1,27 @@
+#include "singly_linked_list.h"
#include <stdio.h>
+#include <stdlib.h>
+
+int next(void) {
+ return rand() % 100;
+}
int main(int argc, char *argv[])
{
+ printf("=== COMP-272 - Assignment 1 - Question 2a ===\n");
+ Node *head = initialize(next());
+
+ for (int i = 0; i < 9; i++)
+ add(head, next());
+
+ printf("\n\t");
+ inspect(head);
+
+ for (int i = 0; i < 10; i+=2){
+ swap(&head, i, i+1);
+ printf("swap: %d,%d\n\t", i, i+1);
+ inspect(head);
+ }
+
return 0;
}
src/01/02a/README.md
@@ -8,6 +8,51 @@ Student ID: 3431709
Swap two adjacent elements in a list by adjusting only the links (and not the data) using singly-linked list.
## Description of the Code
+
+The singly linked list is represented by a `Node` struct.
+
+The `singly_linked_list.c` file contains the functions related to working
+with a `Node` struct. The `Node` struct represents a single node in a
+linked list.
+
## Errors and Warnings
+
+```bash
+モ make run_test
+mkdir build
+clang -c -o build/singly_linked_list.o singly_linked_list.c
+clang -c -o build/singly_linked_list_test.o singly_linked_list_test.c
+clang build/singly_linked_list.o build/singly_linked_list_test.o -lcgreen -o build/test
+Running "main" (13 tests)...
+ "swap_singly_linked_list_tests": 38 passes in 4ms.
+ Completed "main": 38 passes in 4ms.
+```
+
## Sample Input and Output
+
+The program defined in [`main`](./main.c) adds 10 randomly generated
+integers to a singly linked list then swaps each pair of items.
+
+```bash
+モ make run
+mkdir build
+clang -c -o build/singly_linked_list.o singly_linked_list.c
+clang -c -o build/main.o main.c
+clang build/singly_linked_list.o build/main.o -o build/program
+./build/program
+=== COMP-272 - Assignment 1 - Question 2a ===
+
+ [ 83 86 77 15 93 35 86 92 49 21 ]
+swap: 0,1
+ [ 86 83 77 15 93 35 86 92 49 21 ]
+swap: 2,3
+ [ 86 83 15 77 93 35 86 92 49 21 ]
+swap: 4,5
+ [ 86 83 15 77 35 93 86 92 49 21 ]
+swap: 6,7
+ [ 86 83 15 77 35 93 92 86 49 21 ]
+swap: 8,9
+ [ 86 83 15 77 35 93 92 86 21 49 ]
+```
+
## Discussion
src/01/02a/singly_linked_list.c
@@ -103,15 +103,15 @@ void swap(Node **head, int x, int y) {
* A helper method used to print a visual representation
* of a linked list
*
- * @param node The head of the linked list
+ * @param self The head of the linked list
*/
-void inspect(Node *node) {
- if (!node) return;
+void inspect(Node *self) {
+ if (!self) return;
- printf("*******\n");
- while (node) {
- printf("\t%d\n", node->data);
- node = node->next;
+ printf("[");
+ while(self) {
+ printf(" %d ", self->data);
+ self = self->next;
}
- printf("*******\n");
+ printf("]\n");
}