# Assignment 1
**Due: September 13, 2020 11:59 PM US Central Time**. Push to GitHub to submit the assignment.
In this assignment, you’ll implement a linked list in C. Additionally, you’ll use CMake.
The goals of this assignment are:
– to re-familiarize yourself with pointers and pointer arithmetic,
– understand when you need double pointers (\*\*), and
– obtain a basic understanding of CMake.
## Tasks
1. Implement the functions in linkedlist.h in a file named linkedlist.c
2. Submit your assignment by issuing the following commands:
“`bash
$ git add
$ git commit -m “assignment 1”
$ git push origin master
“`
## Building and testing your code
Create the build directory, compile and run your program with these commands:
“`bash
$ mkdir build
$ cd build
$ cmake ..
$ make
$ ./driver
“`
The main function in the driver.c reads input from standard input. This means that when you run it, it will wait for you to enter input on the command line until it encounters the “end-of-file” (EOF) marker. For example, you can type “1 2 3”, press enter, type “9 8 7” press enter, and then press “Ctrl-D” and press enter (Ctrl-D is how you input the EOF marker).
The “list_print“ function should print the numbers you entered, one per line. However, that alone does not guarantee that your implementation is “correct”. In fact, thoroughly testing programs to help ensure that they are bug free is a notoriously difficult problem.
## Evaluation
Your assignment will be graded according to the following criteria:
– **90 points**: Correct implementation of the linked list.
– **10 points**: Consistent programming style, comments, proper formatting and indentation. You can use any indentation tool. For example look at https://www.gnu.org/software/indent/manual/indent.html
## Helpful links:
The C Programming Language by K&R is often available online as a pdf. Chapter 5 on pointers is very helpful.
## Please Note
Solutions received after the due date will be penalized at 20 percent per day as discussed in the class syllabus.
All work must be your own. Collaboration or sharing code is not permitted. It’s easy to use Google to find an implementation of a linked list, but don’t do that: you’re cheating yourself.