ADT list ADT List Elements Structure Domain User
- Slides: 30
ADT list
ADT List Elements Structure Domain User of an ADT must only know this Operations Specification Representation Implementer must know all these. Implementation 2
ADT List: Specification Operations: We assume all operations operate on a list L. 1. Method Find. First ( ) requires: list L is not empty. input: none results: first element set as the current element. output: none. 2. Method Find. Next ( ) requires: list L is not empty. Cur is not last. input: none results: element following the current element is made the current element. output: none. 3. Method Retrieve (Type e) requires: list L is not empty. input: none results: current element is copied into e. output: element e. 3
ADT List: Specification Operations: 4. Method Update (Type e). requires: list L is not empty. input: e. results: the element e is copied into the current node. output: none. 5. Method Insert (Type e). requires: list L is not full. input: e. results: a new node containing element e is created and inserted after the current element in the list. The new element e is made the current element. If the list is empty e is also made the head element. output: none. 4
ADT List: Specification Operations: 6. Method Remove ( ) requires: list L is not empty. input: none results: the current element is removed from the list. If the resulting list is empty current is set to NULL. If successor of the deleted element exists it is made the new current element otherwise first element is made the new current element. output: none. 7. Method Full (boolean flag) input: none. returns: if the number of elements in L has reached the maximum number allowed then flag is set to true otherwise false. output: flag. 5
ADT List: Specification Operations: 8. Method Empty (boolean flag). input: none. results: if the number of elements in L is zero, then flag is set to true otherwise false. Output: flag. 9. Method Last (boolean flag). input: none. requires: L is not empty. Results: if the last element is the current element then flag is set to true otherwise false. Output: flag 6
ADT List: Implementations • Linked List: • Has 3 classes • The Node class • The Link. List class • The main class • Array: • Has 2 classes • The Array class • The main class
ADT List: Implementations (Linked List) • The Node class: public class Node<T> extends Object { public T data; public Node<T> next; public Node () { data = null; next = null; } public Node (T val) { data = val; next = null; } }
ADT List: Implementations (Linked List) • The Link. List class: public class Link. List<T> extends Object { private Node<T> head; private Node<T> current; public Link. List () { head = current = null; } public boolean empty () { return head == null; } public boolean last () { return current. next == null; }
ADT List: Implementations (Linked List) public boolean full () { return false; } public void findfirst () { current = head; } public void findnext () { current = current. next; } public T retrieve () { return current. data; } public void update (T val) { current. data = val; } 10
ADT List: Implementations (Linked List) public void insert (T val) { Node<T> tmp; if (empty()){ current = head = new Node<T> (val); } else { tmp = current. next; current. next = new Node<T> (val); current = current. next; current. next = tmp; } } 11
ADT List: Implementations (Linked List) public void remove () { if (current == head) { head = head. next; } else { Node<T> tmp = head; while (tmp. next != current) tmp = tmp. next; tmp. next = current. next; } if (current. next == null) { current = head; } else { current = current. next; } } } 12
ADT List: Implementations (Array) • The Array class public class Array. List<T> { private int maxsize; private int current; private T[] nodes; /** Creates a new instance of Array. List */ public Array. List(int n) { maxsize = n; size = 0; current = -1; nodes = (T[]) new Object[n]; }
ADT List Implementation (Array) public boolean full () { return size == maxsize; } public boolean empty () return size == 0; } public boolean last () { return current == (size-1); } public void findfirst () { current = 0; } public void findnext () { current++; } 14
ADT List Implementation (Array) public T retrieve () { return nodes[current]; } public void update (T val) { nodes[current] = val; } public void insert (T val) { for (int i = size-1; i > current; --i) { nodes[i+1] = nodes[i]; } current++; nodes[current] = val; size++; } 15
ADT List Implementation (Array) public void remove () { for (int i = current + 1; i < size; i++) { nodes[i-1] = nodes[i]; } size--; if (size == 0) current = -1; else if (current == size) current = 0; } } 16
ADT List: Queue • Queue operations are: • Enqueue(e) -> Insert element e at the rear of the queue. • Dequeue -> Remove and return from the queue the object at the front • length() -> Return the number of elements in the queue • Isempty() -> Return a Boolean value that indicates whether queue is empty. • Isfull() -> Return a Boolean value that indicates whether queue is full.
ADT List: Queue • Queue can be implemented in two ways • Arrays • Linked Lists
ADT Queue (Array Implementaion) public class Array. Queue <T> { private int maxsize; private int head, tail; private T[] nodes; /** Creates a new instance of Array. Queue */ public Array. Queue(int n) { maxsize = n; size = 0; head = tail = 0; nodes = (T[]) new Object[n]; } 19
ADT Queue (Array Implementation) public boolean full () { return size == maxsize ? true : false; } public int length () { return size; } public void enqueue(T e) { nodes[tail] = e; tail = (tail + 1); size++; } 20
ADT Queue (Array Implementation) public T serve () { T e = nodes[head]; head = (head + 1); size--; return e; } } 21
ADT Queue (Linked List Implementation) public class Link. Queue <Type> { private Node<Type> head, tail; private int size; /** Creates a new instance of Link. Queue */ public Link. Queue() { head = tail = null; size = 0; } 22
ADT Queue (Linked List Implementation) public boolean full() { return false; } public int length (){ return size; } 23
ADT Queue (Linked List Implementation) public void enqueue (Type e) { if (tail == null){ head = tail = new Node(e); } else { tail. next = new Node(e); tail = tail. next; } size++; } 24
ADT Queue (Linked List Implementation) public Type serve() { Type x; x = head. data; head = head. next; size--; if (size == 0) tail = null; return x; } } 25
ADT List: Stack • push(int e): inserts an element. • int pop(): removes and returns the last inserted element. • int top. E(): returns the last inserted element without removing it (data). • boolean is. Empty(): indicates whether no elements are stored. • boolean is. Full(): indicates whether the stack full or not.
ADT Stack (Linked List Implementation) public class Node<T> extends Object { public T data; public Node<T> next; public Node () { data = null; next = null; }//constructor }
ADT Stack (Linked List Implementation) public class Link. List. Stack<T> extends Object { private Node<T> top; public Link. List. Stack () { top = null; } //constructor //operation public boolean is. Empty () { return top == null; } public boolean is. Full () { return false; } 28
ADT Stack (Linked List Implementation) public T top. E () { if(top. data==null) throw Empty. Stack. Exception return top. data; } public void push (T val) { Node n = new Node(val); n. next = top; top = n; } 29
ADT Stack (Linked List Implementation) public T pop (){ if(top. data==null) throw Empty. Stack. Exception Node temp = top; top = top. next; return temp. data; } 30
- Single user and multiple user operating system
- Multi user operating system
- List adt definition
- Java list adt
- Adtlist
- Array based implementation of list adt
- List adt
- List adt java
- Polynomial adt in data structure
- List adt
- (p^ q)^( p^q) is a
- Itrxxx
- List adt
- Introduction to functions (review game)
- Z domain to frequency domain
- What is time domain and frequency domain
- Ec2314 digital signal processing
- Z transform tutorial
- Domain specific vs domain general
- Domain specific vs domain general
- Problem domain vs knowledge domain
- S domain to z domain
- The designer expresses the ideas in terms related to the
- Interface structure design
- Interface structure design
- Affective learning objectives examples
- Psychomotor domain verbs list
- Psychomotor domain verbs list
- How to list domain and range
- What are the literary elements of a drama
- Oracle landed cost management