Presentation is loading. Please wait.

Presentation is loading. Please wait.

Review Problems. What is the Big O? i <- N j <- 1 loop exitif(i <= 0) loop exitif(j > M) j <- j + 1 endloop i < i - 1 endloop.

Similar presentations


Presentation on theme: "Review Problems. What is the Big O? i <- N j <- 1 loop exitif(i <= 0) loop exitif(j > M) j <- j + 1 endloop i < i - 1 endloop."— Presentation transcript:

1 Review Problems

2 What is the Big O? i <- N j <- 1 loop exitif(i <= 0) loop exitif(j > M) j <- j + 1 endloop i < i - 1 endloop

3 Review problems Circle and Identify the 3 parts of recursion: Function Fact returnsa Num(N iot in Num) if(N = 0) then Fact returns 1 else Fact returns N * Fact(N - 1) endif endfunction // Fact

4 Review problems Circle and Identify the 3 parts of recursion: Function Fact returnsa Num(N iot in Num) if(N = 0) then Fact returns 1 else Fact returns N * Fact(N - 1) endif endfunction // Fact Check for termination Call self Move one step closer

5 Review Problems Recall that a leaf is a node in a binary tree with no children. Write a module that when passed a pointer to a binary tree will return the number of leaves. The module should use recursion

6 Leaves Function Leaves returnsa Num (current iot Ptr toa TNode) if(current = NIL) then Leaves returns 0 elseif(current^.left = NIL AND current^.right = NIL) then Leaves returns 1 else Leaves returns Leaves(current^.right) + Leaves(current^.left) endif endfunction // Leaves

7 Review Problems How many “time chunks” will be required to run this algorithm on 2 processors? S1 S4 S2 S5 S8 S3 S6 S9 S7 IIIIII

8 Review Problems S1 S4 S2 S5 S8 S3 S6 S9 S7 III

9 Review Problems Write a module to convert an unsorted linked list to a sorted linked list. Use data structure conversion as opposed to a sort algorithm such as Bubble Sort or Merge Sort

10 Solution Recall that for this type problem you will typically need three modules: –A standard linked list AddInOrder module –A modified linked list traversal module modified to keep track of pointer to new list –A startup module

11 Review problems Algorithm Pain a,b,c iot Char a <- ‘b’ b <- ‘c’ c <- ‘a’ Agony(c,a,’b’) print(a,c,b) b <- funky(a,c) print(a,b,c) endalgorithm Procedure Agony(a iot in/out Char, b iot out Char, c iot in Char) t iot Char if(c = ‘c’) then c <- ‘d’ t <- b b <- a a <- t else b <- a a <- ‘b’ endif endprocedure Function funky returnsa Char (x,y isoftype in Char) if(x = y) then funky returns ‘a’ else finky returns ‘b’ endif endfunction

12 Review problems Write a vector class It should be generic and support (at least) the following methods in the public section AddToEnd AddAt(nth) Remove(nth) Size Get(nth)

13 class Vector(DT) public Procedure AddToEnd(din iot in DT) // PPP Procedure AddAt(nth iot in Num, din iot in DT) // PPP Procedure Remove(nth iot in Num) // PPP Function Size returnsa Num() // PPP Function Get returnsa DT(nth iot in Num) // PPP Procedure Initialize() // PPP

14 protected Node definesa record data iot DT next iot Ptr toa Node endrecord head isoftype Ptr toa Node count isoftype Num Procedure AddToEnd(din iot in DT) AddToEndHelper(head, din) endprocedure // AddToEnd

15 Procedure AddToEndHelper (cur iot in/out Ptr toa Node, din iot in DT) // PPP if(cur = NIL) then cur = new(Node) cur^.data <- din cur^.next <- NIL count <- count + 1 else AddToEndHelper(cur^.next, din) endif endprocedure // AddToEndHelper Procedure AddAt(nth iot in Num, din iot in DT) AddAtHelper(head, nth, din, 1) endprocedure // AddAt

16 Procedure AddAtHelper(cur iot in/out Ptr toa Node, nth iot in Num, din iot in DT,kount iot in Num) // PPP temp iot Ptr toa Node if(cur = NIL OR nth = kount) then temp <- new(Node) temp^.data <- din temp^.next <- cur cur <- temp count <- count + 1 else AddAtHelper(cur^.next, nth, din, kount + 1) endif endprocedure // AddAtHelper

17 Procedure Remove(nth iot in Num) RemoveHelper(head, nth, 1) endprocedure // Remove Procedure RemoveHelper(cur iot in/out Ptr toa Node, nth iot in Num, kount iot in Num) // PPP if(cur <> NIL) then if(nth = kount) then cur <- cur^.next count <- count - 1 else RemoveHelper(cur^.next, nth, kount + 1) endif endprocedure // RemoveHelper

18 Function Size returnsa Num() Size returns count endfunction // Size Function Get returnsa DT(nth iot in Num) Get returns GetHelper(head, nth, kount) endfunction Function GetHelper returnsa DT (cur iot in Ptr toa Node, nth, kount iot in Num) // Precon: User must not request item > Size ** // PP if(nth = kount) then GetHelper returns cur^.data else GetHelper returns GetHelper (cur^.next, nth, kount + 1) endif endfunction // GetHelper

19 Procedure Initialize() head <- NIL count <- 0 endprocedure // Initialize endclass // Vector

20 Review problems Use the generic Vector class you just wrote to write a baseball roster program. It should manage baseball player records consisting of –Name –Position It should support the following operations –Add a player –Remove a player –Add a player at position N –Print a roster (only if there are 9 players otherwise print an error message) Assume that the record is named Player Assume that you have modules called –Procedure GetPlayer(data isoftype out Player) –Procedure PrintPlayer(data isoftype in Player)

21 Procedure Menu(Choice iot out Num) print(“1-Add a player”) print(“2-Remove a player”) print(“3-Add a player at position N”) print(“4-Print a roster”) print(“5-Quit”) read(Choice) endprocedure // Menu Player definesa record Name iot String Position iot String endrecord // Player Procedure GetPlayer(data isoftype out Player) Procedure PrintPlayer(data isoftype in Player) TEAMSIZE is 9

22 Algorithm Roster uses Vector(DT) Team isoftype Vector(Player) // Make the Vector!!! Choice iot Num Loop Menu(Choice) exitif(Choice = 5) if(Choice = 1) then Add(Team) elseif(Choice = 2) then Remove(Team) elseif(Choice = 3) then AddAt(Team) elseif(Choice = 4) then PrntRoster(Team) endif endalgorithm // Roster

23 Procedure Add(Team iot in/out Vector(Player)) temp iot Player GetPlayer(temp) Team.AddToEnd(temp) endprocedure // Add procedure Remove(Team iot in/out Vector(Player)) i iot Num print(“Line number to remove?”) read(i) Team.Remove(i) endprocedure // Remove Procedure AddAt(Team iot in/out Vector(Player)) i iot Num temp iot Player print(“Enter at what line number”) GetPlayer(temp) Team.AddAt(i, temp) endprocedure // AddAt

24 Procedure PrntRoster(Team iot in/out Vector(Player))) i iot Num if(Team.Size() <> TEAMSIZE) print(“Wrong size team”) else i < 1 Loop exitif(i > TEAMSIZE) PrintPlayer(Team.Get(i)) i <- i + 1 endloop endif endprocedure // PrntRoster


Download ppt "Review Problems. What is the Big O? i <- N j <- 1 loop exitif(i <= 0) loop exitif(j > M) j <- j + 1 endloop i < i - 1 endloop."

Similar presentations


Ads by Google