Presentation is loading. Please wait.

Presentation is loading. Please wait.

List L = x 0 x 1 x 2 x 3 … x n-1 n = # elements If a list is ordered than the key of x i-1 <= the key of x i for all i where 0 < i < n. The sort symbol.

Similar presentations


Presentation on theme: "List L = x 0 x 1 x 2 x 3 … x n-1 n = # elements If a list is ordered than the key of x i-1 <= the key of x i for all i where 0 < i < n. The sort symbol."— Presentation transcript:

1 List L = x 0 x 1 x 2 x 3 … x n-1 n = # elements If a list is ordered than the key of x i-1 <= the key of x i for all i where 0 < i < n. The sort symbol = or any other function that determines ordering in the keys. An unordered list does not have this restriction. Functions: access(L, i) returns x i length(L) returns n concat(L 1, L 2 ) returns a new list with L 2 concatenated on to L 1 createEmptyList() returns a newly created empty list isEmptyList(L) returns true if L is empty and false if it is not searchFor(L, key) returns i where the key of x i = key remove(L, i) returns a list with x i removed; the old x i+1 is now x i, etc. inserti(L, i, x) returns a list with x inserted as x i ; the old x i is now x i+1, etc. insert(L, x) returns a list with x added to L sort(L) returns the list in sorted order Lists

2 A Node With Pointer NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95

3 Homework 1 Describe how to use a set of nodes with pointers (as described in class) to implement a variable length unordered list. Determine how to do the following functions: access, length, concat, createEmptyList, isEmptyList, searchFor, remove, inserti, and insert. How would any of these functions change if the list was to be ordered?

4 Linked List head NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 null NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 is a node pointer which is part of the node, we’ll call it next when we pass a list in as a parameter we pass in the head a pointer pointing to null indicates the end of the list

5 Linked List with Tail head NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 null NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 tail

6 Linked List head NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 null NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 is a node pointer which is part of the node, we’ll call it next when we pass a list in as a parameter we pass in the head a pointer pointing to null indicates the end of the list

7 createEmptyList() Declare a pointer to type node called head n = 0 head null

8 isEmptyList(L) if head == null return true else return false

9 isEmptyList(L) return head == null

10 access(L, i) declare a pointer temp if i = n return null temp = head for j = 0; j < i; j++ temp = temp.next return temp

11 length(L) int count = 0 temp = head while temp != null count = count + 1 temp = temp.next return count

12 length(L) return n

13 searchFor(L, key) int count = 0 temp = head while temp != null if temp.key = key return count count = count + 1 temp = temp.next return -1

14 insert(L, x) loop until temp.next == null then temp.next = x n = n + 1

15 insert(L, x) x.next = head head = x n = n + 1

16 concat(L 1, L 2 ) if head 1 == null head 1 = head 2 else temp = head 1 while temp.next != null temp = temp.next temp.next = head 2 n 1 = n 1 + n 2 return head 1

17 remove(L, i) head NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 null NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 p2p1 head NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 null NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 p2p1 p1.next = p2.next P2.next = null

18 inserti(L, i, x) head NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 null NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 p2p1 head NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 null NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 p2p1 p2.next = p1.next p1.next = p2

19 search-remove head NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 null NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 p

20 Doubly Linked List head NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 null NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 p tail null Two pointers per node: next prev

21 Circular Linked List NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: Grade: 95 p

22 Stacks Stack S = x 0 x 1 x 2 x 3 … x n-1 n = # elements A stack is a list but the nodes are only accessed last-in-first-out (LIFO). Functions: createEmptyStack() returns a newly created empty stack top(S) returns the last node of S pop(S) returns and removes the last node of S push(S, x) returns a S with x added as the last element isEmptyStack(S) returns true if S is empty and false if it is not

23 Homework 2 Describe how to implement a stack using an array (assume it will never have more than 100 elements). Do the five stack functions. Describe how to implement a stack using an set of nodes (this stack will have no number of element limit). Do the five stack functions.


Download ppt "List L = x 0 x 1 x 2 x 3 … x n-1 n = # elements If a list is ordered than the key of x i-1 <= the key of x i for all i where 0 < i < n. The sort symbol."

Similar presentations


Ads by Google