1 / 23

Lists

Lists. 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 <= can be replaced by >= or any other function that determines ordering in the keys.

quincy
Download Presentation

Lists

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lists List L = x0 x1 x2 x3 … xn-1 n = # elements If a list is ordered than the key of xi-1 <= the key of xi for all i where 0 < i < n. The sort symbol <= can be replaced by >= or any other function that determines ordering in the keys. An unordered list does not have this restriction. Functions: access(L, i) returns xi length(L) returns n concat(L1, L2) returns a new list with L2 concatenated on to L1 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 xi = key remove(L, i) returns a list with xi removed; the old xi+1 is now xi, etc. inserti(L, i, x) returns a list with x inserted as xi; the old xi is now xi+1, etc. insert(L, x) returns a list with x added to L sort(L) returns the list in sorted order

  2. A Node With Pointer NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: 123-34-1112 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. NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: 123-34-1112 Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: 123-34-1112 Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: 123-34-1112 Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: 123-34-1112 Grade: 95 Linked List head 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 null is a node pointer which is part of the node, we’ll call it next

  5. NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: 123-34-1112 Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: 123-34-1112 Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: 123-34-1112 Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: 123-34-1112 Grade: 95 Linked List with Tail tail head null

  6. NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: 123-34-1112 Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: 123-34-1112 Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: 123-34-1112 Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: 123-34-1112 Grade: 95 Linked List head 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 null is a node pointer which is part of the node, we’ll call it next

  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 < 0 or 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(L1, L2) if head1 == null head1 = head2 else temp = head1 while temp.next != null temp = temp.next temp.next = head2 n1 = n1 +n2 return head1

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

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

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

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

  21. NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: 123-34-1112 Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: 123-34-1112 Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: 123-34-1112 Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: 123-34-1112 Grade: 95 NameLast: Smart FirstName: Joe StudentNumber: 8 SSN: 123-34-1112 Grade: 95 Circular Linked List p

  22. Stacks Stack S = x0 x1 x2 x3 … xn-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.

More Related