CS 331: Recursion and Linked Lists - Objectives, Examples, and Problems - Prof. Alan Matto, Study notes of Data Structures and Algorithms

A part of the cs 331 course materials at illinois institute of technology. It covers the objectives, examples, and problems related to recursion and linked lists. Students will learn about the relationship between recursion and induction, three patterns of recursion, and how to describe a list in terms of recursion. The document also includes examples of implementing a linked list in java and various problems to try.

Typology: Study notes

Pre 2010

Uploaded on 08/19/2009

koofers-user-h9v
koofers-user-h9v 🇺🇸

10 documents

1 / 1

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
CS 331 Recursion and Linked Lists September 12, 2008
1 Objectives
Recursion is one of the most powerful ideas in Computer Science and in Mathematics. A proper understand-
ing of it is essential.
Understand how recursion is related to induction
Know three patterns of recursion:
Iterating, Mapping, Folding
Be able to describe a list in terms of recursion.
Know how to use nested classes to allow fast access to information about the list.
Know how to implement a linked list in Java.
Be able to draw a memory diagram for the operations of a linked list.
2 Examples
1public class List<E> {// use generics here.
2public class ListNode {
3E data;
4ListNode next; // add constructors, too.
5}
6
7ListNode first = null;
8ListNode last = null;
9ListNode cursor = null;
10 int size = 0;
11 }
3 Problems
Try the following problems. In a few minutes the instructor will go over the solutions. Feel free to work with
the person next to you!
Write a method to return a list with every element incremented. (This is called functional style.)
Write a method to increment every element of a list. (This is called imperative style, or destructive
update.)
Write a method that returns the product of a list.
Write the code to return the maximum element of a list.
Which of the following operations will a last pointer speed up consistently?
Delete the last element.
Insert an element at the end of the list.
Append two lists together.
Mattox Beckman Page 1 Illinois Institute of Technology

Partial preview of the text

Download CS 331: Recursion and Linked Lists - Objectives, Examples, and Problems - Prof. Alan Matto and more Study notes Data Structures and Algorithms in PDF only on Docsity!

CS 331 Recursion and Linked Lists September 12, 2008

1 Objectives

Recursion is one of the most powerful ideas in Computer Science and in Mathematics. A proper understand- ing of it is essential.

  • Understand how recursion is related to induction
  • Know three patterns of recursion: Iterating, Mapping, Folding
  • Be able to describe a list in terms of recursion.
  • Know how to use nested classes to allow fast access to information about the list.
  • Know how to implement a linked list in Java.
  • Be able to draw a memory diagram for the operations of a linked list.

2 Examples

1 public class List { // use generics here. 2 public class ListNode { 3 E data; 4 ListNode next; // add constructors, too. 5 } 6 7 ListNode first = null; 8 ListNode last = null; 9 ListNode cursor = null; 10 int size = 0; 11 }

3 Problems

Try the following problems. In a few minutes the instructor will go over the solutions. Feel free to work with the person next to you!

  • Write a method to return a list with every element incremented. (This is called functional style.)
  • Write a method to increment every element of a list. (This is called imperative style, or destructive update.)
  • Write a method that returns the product of a list.
  • Write the code to return the maximum element of a list.
  • Which of the following operations will a last pointer speed up consistently?
    • Delete the last element.
    • Insert an element at the end of the list.
    • Append two lists together.

Mattox Beckman Page 1 Illinois Institute of Technology