Select a category to the left.



Light or dark? Choose how the site looks to you by clicking an image below.

Light Dark


Preferred Language

All content on is originally in UK English. However, if content exists in your preferred language, it will display as that instead. Feel free to choose that below. This will require a page refresh to take effect.


"" details

Domain Name:
Site Version: 3.0.1
Last Updated: 2019/08/18

Getting Started

  • The lab writeup is here:
  • This is a normal lab assignment that's due in a week (April 1st, 2020). No intermediate submissions or anything special.
  • No... you can't use #include <list>. Don't even dream of it. You're writing your own implementation manually.
  • Know how doubly-linked lists work, as well as what a sentinel node is, and what it means for a linked list to be circular. The lecture notes over these.

Side files

Usually, for lab "lectures", I prepare a digital copy of my notes to write on the whiteboard. This time, because I'm in a good mood, I have decided to make those public. You may access them here:
  • 2020-03-24 - Doubly-Linked Lists.pdf - Contains basically everything I write on the board (and more). Getting started procedure, submission command, suggested function order, some function implementation details, examples (with diagrams), and more.
Getting Started

Copying files over

Back to the new layout with directories. You'll need to copy over the include and the src directories over, as well as makefile. These commands will get you what you need.
UNIX Command
UNIX> mkdir bin obj
UNIX> cp ~jplank/cs140/Labs/Lab8/makefile .
UNIX> cp -r ~jplank/cs140/Labs/Lab8/include .
UNIX> cp -r ~jplank/cs140/Labs/Lab8/src .
Notice how they aren't written in the lab writeup anymore. This was intentional. I think you all should understand, by now, how to copy files over.

Additional Asset (dlist.cpp)

Here's a template file for your code. It outlines the overall structure of the functions you need to implement. I also reorder the functions based on a suggested implementation order in the notes I linked to above. It compiles by default. Obviously, you just have to implement the functions from there. To grab it, either get it from my server or from the following command on Hydra/Tesla:
UNIX Command
UNIX> cp ~ssmit285/public/code/dlist_template.cpp src/dlist.cpp
You know the drill. I want a TAR file for submission. Here's the command you should run.

Submission Command

The usual:
UNIX Command
UNIX> tar -cvf lab8.tar src/dlist.cpp

The name of the tar file doesn't actually matter, as long as it ends with .tar.