7.1 Our Current Model


 Roger Lee
 6 years ago
 Views:
Transcription
1 Chapter 7 The Stack In this chapter we examine what is arguably the most important abstract data type in computer science, the stack. We will see that the stack ADT and its implementation are very simple. The stack's simplicity is misleading, however, for it has a variety of sophisticated applications.
2 68 Chapter 7 The Stack 7.1 Our Current Model Fig Our current software model, which shows class Stack and its association with class LinearNode
3 7.3 Stack Implementation The Stack ADT The stack is so named because it behaves like a deck of playing cards: the current card of interest is the top card, and no other card may be examined or removed. In other words, the stack is a lastinfirstout (LIFO) collection. The stack ADT appears below. stack: a linear collection of elements that can be accessed at only one end; the current element of interest is called the top element operations: clear()  Make the collection empty. isempty()  Is the collection empty? pop()  Remove the top element. push(element)  Make the given element the top element. size()  How many elements are in the collection? top()  Get the top element of the collection. 7.3 Stack Implementation The stack ADT can easily be implemented as an array container in which the top element is either stored at index 0 or at index n  1, where n is the size of the collection. If the top element is stored at index 0, then the push and pop operations have linear running times, for the rest of the collection's elements must be shifted to make room for the new top or to remove the old one. If the top element is stored at index n  1, then push and pop are constanttime operations, and so the arraybased stack is customarily implemented in this way. But the fundamental characteristic of the array is efficient random access. The vector is a randomaccess collection, and so it makes sense to have implemented the vector as an array container, as we did in Chapters 3 and 4. But the stack is not a randomaccess collection. The heap is also not a randomaccess collection, but we saw in the last chapter that the complete binary tree lends itself to an array implementation. Might the same be said of the stack? In other words, do we gain anything by implementing the stack ADT using an array? It is hard to see what a stack implementation might gain from the random access of an array, but it is easy to see what the implementation would lose: an array container often wastes space in the form of unused array elements. Because the stack is not random access, because an arraybased stack implementation cannot exploit the array's random access, and because an arraybased implementation wastes
4 70 Chapter 7 The Stack space, we will implement the stack ADT using an alternative structure, the linked list. linked list: a linear collection of nodes in which each node has, at a minimum, a data portion and a link portion; a node's link portion is a pointer or reference to the next node in the list, unless there is no next node, in which case the link portion is empty Linked Lists The figure below shows a linked list containing the integer values 3, 7, 25, 42, and 12. The absence of an arrow pointing out of the last node indicates an empty link, i.e., the end of the list. The first node of a linked list is kept track of using a reference or pointer called head, and sometimes the last node is kept track of using a reference or pointer called tail. Fig An example linked list The nodes of a linked list are not stored in contiguous blocks of memory, hence the links. Only the memory addresses of the first and last nodes are stored outside the list; the memory address of any internal node is stored in another node, namely the predecessor. This means that a given internal node can be accessed only by navigating to that node by way of the links, starting with head. Thus a linked list is a sequentialaccess structure, like an audio or video cassette Class LinearNode and Some Elementary LinkedList Operations Let us now examine a few elementary linkedlist operations, some of which we will use in our stack implementation. All of our examples will make use of the LinearNode class shown below. Observe that both the data and next fields of a LinearNode are declared public. This may appear to violate a cardinal rule of objectoriented design and development, but it does not. We will never use a linked list outside a container.
5 7.3 Stack Implementation 71 The container will declare head and tail as protected, and access to the list will be restricted to the methods of the container. public class LinearNode public Object data; public LinearNode next; // The following constructors are obviously unnecessary, // considering that 'data' and 'next' are public. These // constructors are provided for the sake of convenience. public LinearNode(Object dat) data = dat; } public LinearNode(Object dat, LinearNode nxt) data = dat; } } next = nxt; Creating an Empty Linked List Creating an empty linked list is easy. Simply declare a head reference and a tail reference and set them to null. LinearNode head = null, tail = null; Inserting into an Empty Linked List To insert an element into an empty linked list, we must instantiate a node, initialize its data field, place null in its next field, and assign its memory address to head and tail. The first LinearNode constructor will allow us to do all this in one statement. // Create a onenode linked list to store the integer 0. head = tail = new LinearNode(new Integer(0)); The above code creates the linked list shown below.
6 72 Chapter 7 The Stack Inserting at the Head or the Tail of a Nonempty Linked List The code below inserts a new node containing the integer value 1 at the head of the linked list shown above. The second LinearNode constructor allows us to do the insertion with a single statement. // Because the assignment to 'head' is carried out after the new // node has been created, the value of 'head' that is passed to // the constructor is the memory address of the old head node, the // node containing 0. head = new LinearNode(new Integer(1), head); // Here is a threestep alternative. // Instantiate a new node with an empty link. LinearNode temp = new LinearNode(new Integer(1)); temp.next = head; head = temp; // Link the new node to the head node. // Make 'head' point at the new node. The new list is shown below. Insertion at the tail can also be accomplished with a single statement. The code below inserts a node containing 1 at the tail of the above list.
7 7.3 Stack Implementation 73 tail = tail.next = new LinearNode(new Integer(1)); // Here is a twostep alternative. tail.next = new LinearNode(new Integer(1)); tail = tail.next; // Move 'tail' ahead to the new node. The resulting list appears below. Removing the Head Node of a Linked List Removing the head node of a linked list amounts to moving head forward to the second node, provided that a second node exists. The special case of a onenode list requires that tail be updated as well. The code to remove the head node of the above list is shown below. /* Move 'head' forward. If the list had two or more nodes, then 'head' now points to the second node. If the list had only one node, then 'head' is now equal to null. In either case, no reference to the old head node remains, and so that node can be reclaimed by the garbage collector. */ head = head.next; // If 'head' is now equal to null, then the list had only one // node. The result of the removal should be an empty list, and so // 'tail' must be set to null. if (head == null) tail = null; The figure below shows the list that results from removing the head node of the above list.
8 74 Chapter 7 The Stack A LinkedList Stack Implementation We now implement the stack ADT as a linkedlist container. Class Stack inherits from class Container and uses the LinearNode class defined above. A Stack's top element is stored in the head node. public class Stack extends Container protected LinearNode head; // We need only a head reference. // There is no use for a tail // reference because the top // element is at the head of the // list. /* Method clear() is inherited from Container, but no linked list is present at that level of abstraction. Thus class Stack overrides the superclass method so as to make the linked list ready for garbage collection. The list is prepared for garbage collection by setting 'head' to null. After 'head' has been set to null, the linked list can no longer be accessed. The unreachable list is recognized as such by the garbage collector and is reclaimed. */ public void clear() super.clear(); // Call Container.clear. head = null; // Prepare the list for garbage } // collection. /* precondition: If the collection is empty this method has nothing to do, in which case it returns null. postcondition: The top element has been removed from the collection and has been returned. */ public Object pop() if (isempty()) return null; Object element = head.data; // Save the top element. head = head.next; // Move 'head' forward. numitems; return element; // Return the top element. } /* precondition: N/A postcondition: The given element is the new top element. */ public void push(object element) if (isempty()) head = new LinearNode(element); else head = new LinearNode(element, head); numitems++; }
9 7.4 Stack Applications 75 /* precondition: If the collection is empty it has no top element, in which case this method returns null. postcondition: The top element has been returned. */ } public Object top() if (isempty()) return null; return head.data; } 7.4 Stack Applications The stack ADT has many applications, including argument passing, pushdown automata and Turing machines, and expression evaluation. Argument passing is the subject of the next chapter, and the theory of computation is beyond the scope of this book. Thus we turn to a discussion of expression evaluation in the context of constant folding, a type of optimization that is done by programminglanguage compilers Constant Folding Consider the following Java statement. // Compute the volume of a sphere of radius 2. double volume = 4.0 / 3 * Math.PI * 2 * 2 * 2; A nonoptimizing Java compiler might generate byte code for this statement that is roughly equivalent to the following pseudocode. fld 3.0 // Load 3.0. fld 4.0 // Load 4.0. fdiv // Compute 4.0 / 3.0. fld Math.PI // Load Math.PI. fmul // Compute 4.0 / 3.0 * Math.PI. fld 2.0 // Load 2.0. fmul // Compute 4.0 / 3.0 * Math.PI * 2.0. fld 2.0 // Load 2.0. fmul // Compute 4.0 / 3.0 * Math.PI * 2.0 * 2.0. fld 2.0 // Load 2.0. fmul // Compute 4.0 / 3.0 * Math.PI * 2.0 * 2.0 * 2.0. fstp volume // Store the result in 'volume'. The preceding byte code is far from optimal. The expression to be evaluated consists only of constants, the values of which are obviously
10 76 Chapter 7 The Stack available to the Java compiler. If the Java compiler were to evaluate the expression, rather than generating byte code to compute the value at run time, the resulting program would see a considerable decrease in its execution time, for the two instructions shown below will surely execute much faster than the previous 12 instructions. fld 33.5 fstp volume The compiletime evaluation of constant expressions is called constant folding. Constant folding can be accomplished using the stack ADT Using a Stack to Evaluate an Arithmetic Expression Our approach to expression evaluation will have two steps: 1. Use a stack to convert an infix expression to a postfix expression. 2. Use a stack to evaluate the postfix expression that resulted from step 1. In an infix expression, a binary operator appears between its two operands. In a postfix expression, a binary operator appears after its two operands. Below are some examples of infix expressions along with their corresponding postfix expressions. The ^ symbol denotes exponentiation. Table 7.1. Some example infix arithmetic expressions and their postfix equivalents Infix Expression Postfix Expression (3 + 6) % % ((3 + 6) % 7) ^ % 5 ^ ((3 + 6) % 7) ^ % 5 ^ % 7 ^ ^ % Notice that the order of an infix expression's operands is preserved in its postfix expression. The order of the operators may change, however, depending on their precedence. Postfix expressions do not require parentheses because the precedence of an operator in a postfix expression is implied by the ordering of the expression's operands and operators.
11 7.4 Stack Applications 77 InfixtoPostfix Conversion The infixtopostfix conversion algorithm is specified below. CONVERTING AN INFIX EXPRESSION TO A POSTFIX EXPRESSION 1. Initialize a stack of characters to hold the operation symbols and parentheses. 2. do if (the next input is a left parenthesis) Read the parenthesis and push it onto the stack. else if (the next input is a number or other operand) Read the operand and write it to the output. else if (the next input is an operation symbol) Print the top operation and pop it; keep doing this until one of the following occurs. (1) The stack becomes empty. (2) The stack's top item is a left parenthesis. (3) The stack's top item is an operation with lower precedence than the next input. When one of these situations occurs, stop popping, read the next input, and push the input onto the stack. } else Read and discard the next input, a right parenthesis. Print the top operation and pop it; keep printing and popping until the next symbol on the stack is a left parenthesis. (If no left parenthesis is found, print an error message announcing unbalanced parentheses and halt.) Finally, pop the left parenthesis. } while (there is more input to read); 3. Print and pop any operations that remain on the stack. (There should be no left parentheses on the stack; otherwise, the input expression did not have balanced parentheses.) Let us apply the algorithm to the infix expression ((3 + 6) % 7) ^ 51. The initial states of our input, our stack, and our output are shown below.
12 78 Chapter 7 The Stack The first character of input is a left parenthesis. According to the algorithm, the left parenthesis should be pushed onto the stack. The pointer into the input is then moved forward, leaving the system in the state shown below. The next character of input is another left parenthesis. The parenthesis is pushed onto the stack and the input pointer is again moved forward. The following diagram shows the system's new state.
13 7.4 Stack Applications 79 The next input character is an operand. Any operand is immediately written to the output. Both the input and output pointers are then moved forward. The algorithm now encounters an operator. There is no operator on top of the stack, and so the input operator, +, is immediately pushed onto the stack and the input pointer is moved forward.
14 80 Chapter 7 The Stack The next input, an operand, is written to the output string. The right parenthesis is now read and discarded. Then the stack's top operator is popped and printed, after which the top left parenthesis is popped and discarded.
15 7.4 Stack Applications 81 The next character of input is another operator. There are no operators on top of the stack, and so the % operator is immediately pushed. The next input, an operator, gets written to the postfix string.
16 82 Chapter 7 The Stack The right parenthesis is now read and discarded, after which the stack's top operator is popped and printed to the output string. The right parenthesis's matching left parenthesis is then popped and discarded. The next input character is an operator and the stack is empty. Consequently, the operator gets pushed.
17 7.4 Stack Applications 83 The next input, 5, is an operand. It gets written to the postfix string. The next input is the subtraction operator. The stack's top symbol is an operator with higher precedence, and so the ^ operator must be popped and written to the postfix string before the  operator gets pushed.
18 84 Chapter 7 The Stack The remaining input, 1, is an operand. The 1 is written to the output. Having reached the end of the input string, the algorithm's dowhile loop terminates. According to step 3, any operators that remain on the stack should be popped and written to the output. Thus the  operator is popped and written. The stack is now empty, which indicates that the infix expression had balanced parentheses.
19 Exercises 85 Postfix Evaluation The postfix evaluation algorithm is specified below. Apply it to the postfix expression above. EVALUATING A POSTFIX EXPRESSION 1. Initialize a stack to hold the operands. 2. do if (the next input is a number) Read the next input and push it onto the stack. else Read the next input, an operation symbol. Get the top two numbers off of the stack. Apply the operation to the two numbers, making sure to use the first number off as the right operand and the second number off as the left operand. Push the result onto the stack. } while (there is more input to read); 3. The stack now contains one number, the value of the expression.
20 86 Chapter 7 The Stack Exercises 1. Add attributes and operations to the class diagram shown at the beginning of the chapter. 2. Perform a space analysis of the array and the linked list. Hint: Assume that Java is the target programming language and that a Java reference occupies k bytes. For a collection of size n, how many array elements must go unused for an array's space requirement to exceed that of a linked list? 3. Design and code a program to identify palindromes. 4. Design and code a program that prompts its user for an infix expression, reads the expression, converts the expression to postfix, evaluates the postfix expression, and displays the result. Your program should handle only nonnegative singledigit integer operands and the integer operators +, , *, /, %, and ^. Be sure not to divide by zero.
Data Structures and Algorithms V22.0102. Otávio Braga
Data Structures and Algorithms V22.0102 Otávio Braga We use a stack When an operand is read, output it When an operator is read Pop until the top of the stack has an element of lower precedence Then push
More informationGlossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
More informationStacks. Stacks (and Queues) Stacks. q Stack: what is it? q ADT. q Applications. q Implementation(s) CSCU9A3 1
Stacks (and Queues) 1 Stacks Stack: what is it? ADT Applications Implementation(s) 2 CSCU9A3 1 Stacks and ueues A stack is a very important data structure in computing science. A stack is a seuence of
More informationDATA STRUCTURES USING C
DATA STRUCTURES USING C QUESTION BANK UNIT I 1. Define data. 2. Define Entity. 3. Define information. 4. Define Array. 5. Define data structure. 6. Give any two applications of data structures. 7. Give
More informationChapter 3: Restricted Structures Page 1
Chapter 3: Restricted Structures Page 1 1 2 3 4 5 6 7 8 9 10 Restricted Structures Chapter 3 Overview Of Restricted Structures The two most commonly used restricted structures are Stack and Queue Both
More informationDATA STRUCTURE  STACK
DATA STRUCTURE  STACK http://www.tutorialspoint.com/data_structures_algorithms/stack_algorithm.htm Copyright tutorialspoint.com A stack is an abstract data type ADT, commonly used in most programming
More informationIntroduction to Stacks
Introduction to Stacks What is a Stack Stack implementation using array. Stack implementation using linked list. Applications of Stack. What is a Stack? Stack is a data structure in which data is added
More informationStacks. Linear data structures
Stacks Linear data structures Collection of components that can be arranged as a straight line Data structure grows or shrinks as we add or remove objects ADTs provide an abstract layer for various operations
More informationThis lecture. Abstract data types Stacks Queues. ADTs, Stacks, Queues 1. 2004 Goodrich, Tamassia
This lecture Abstract data types Stacks Queues ADTs, Stacks, Queues 1 Abstract Data Types (ADTs) An abstract data type (ADT) is an abstraction of a data structure An ADT specifies: Data stored Operations
More informationMAX = 5 Current = 0 'This will declare an array with 5 elements. Inserting a Value onto the Stack (Push) 
=============================================================================================================================== DATA STRUCTURE PSEUDOCODE EXAMPLES (c) Mubashir N. Mir  www.mubashirnabi.com
More informationModule 2 Stacks and Queues: Abstract Data Types
Module 2 Stacks and Queues: Abstract Data Types A stack is one of the most important and useful nonprimitive linear data structure in computer science. It is an ordered collection of items into which
More informationChapter 14 The Binary Search Tree
Chapter 14 The Binary Search Tree In Chapter 5 we discussed the binary search algorithm, which depends on a sorted vector. Although the binary search, being in O(lg(n)), is very efficient, inserting a
More informationCHAPTER 4 ESSENTIAL DATA STRUCTRURES
CHAPTER 4 ESSENTIAL DATA STRUCTURES 72 CHAPTER 4 ESSENTIAL DATA STRUCTRURES In every algorithm, there is a need to store data. Ranging from storing a single value in a single variable, to more complex
More informationChapter 5 Instructor's Manual
The Essentials of Computer Organization and Architecture Linda Null and Julia Lobur Jones and Bartlett Publishers, 2003 Chapter 5 Instructor's Manual Chapter Objectives Chapter 5, A Closer Look at Instruction
More informationThe following themes form the major topics of this chapter: The terms and concepts related to trees (Section 5.2).
CHAPTER 5 The Tree Data Model There are many situations in which information has a hierarchical or nested structure like that found in family trees or organization charts. The abstraction that models hierarchical
More informationOutline. Computer Science 331. Stack ADT. Definition of a Stack ADT. Stacks. Parenthesis Matching. Mike Jacobson
Outline Computer Science 1 Stacks Mike Jacobson Department of Computer Science University of Calgary Lecture #12 1 2 Applications ArrayBased Linked ListBased 4 Additional Information Mike Jacobson (University
More information1. The memory address of the first element of an array is called A. floor address B. foundation addressc. first address D.
1. The memory address of the first element of an array is called A. floor address B. foundation addressc. first address D. base address 2. The memory address of fifth element of an array can be calculated
More information1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++
Answer the following 1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++ 2) Which data structure is needed to convert infix notations to postfix notations? Stack 3) The
More informationChapter 7D The Java Virtual Machine
This sub chapter discusses another architecture, that of the JVM (Java Virtual Machine). In general, a VM (Virtual Machine) is a hypothetical machine (implemented in either hardware or software) that directly
More informationCSE373: Data Structures and Algorithms Lecture 1: Introduction; ADTs; Stacks/Queues. Linda Shapiro Spring 2016
CSE373: Data Structures and Algorithms Lecture 1: Introduction; ADTs; Stacks/Queues Linda Shapiro Registration We have 180 students registered and others who want to get in. If you re thinking of dropping
More informationMoving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an objectoriented language. This document describes some of the differences between objectoriented programming in Scheme (which we hope you
More informationAlgorithms and Data Structures
Algorithms and Data Structures Part 2: Data Structures PD Dr. rer. nat. habil. RalfPeter Mundani Computation in Engineering (CiE) Summer Term 2016 Overview general linked lists stacks queues trees 2 2
More informationHabanero Extreme Scale Software Research Project
Habanero Extreme Scale Software Research Project Comp215: Java Method Dispatch Zoran Budimlić (Rice University) Always remember that you are absolutely unique. Just like everyone else.  Margaret Mead
More informationCourse: Programming II  Abstract Data Types. The ADT Stack. A stack. The ADT Stack and Recursion Slide Number 1
Definition Course: Programming II  Abstract Data Types The ADT Stack The ADT Stack is a linear sequence of an arbitrary number of items, together with access procedures. The access procedures permit insertions
More informationSymbol Tables. Introduction
Symbol Tables Introduction A compiler needs to collect and use information about the names appearing in the source program. This information is entered into a data structure called a symbol table. The
More informationData Structures Using C++ 2E. Chapter 5 Linked Lists
Data Structures Using C++ 2E Chapter 5 Linked Lists Doubly Linked Lists Traversed in either direction Typical operations Initialize the list Destroy the list Determine if list empty Search list for a given
More informationCS104: Data Structures and ObjectOriented Design (Fall 2013) October 24, 2013: Priority Queues Scribes: CS 104 Teaching Team
CS104: Data Structures and ObjectOriented Design (Fall 2013) October 24, 2013: Priority Queues Scribes: CS 104 Teaching Team Lecture Summary In this lecture, we learned about the ADT Priority Queue. A
More informationJava Application Developer Certificate Program Competencies
Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle
More informationSTACKS,QUEUES, AND LINKED LISTS
STACKS,QUEUES, AND LINKED LISTS Stacks Queues Linked Lists DoubleEnded Queues Case Study: A Stock Analysis Applet 1 Stacks Astack is a container of objects that are inserted and removed according to the
More informationJava Interview Questions and Answers
1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java
More information14 Stacks, Queues, And Linked Lists
141 Java Au Naturel by William C. Jones 141 14 Stacks, Queues, And Linked Lists Overview This chapter requires that you have a solid understanding of arrays (Chapter Seven) and have studied Exceptions
More informationSequential Data Structures
Sequential Data Structures In this lecture we introduce the basic data structures for storing sequences of objects. These data structures are based on arrays and linked lists, which you met in first year
More information10CS35: Data Structures Using C
CS35: Data Structures Using C QUESTION BANK REVIEW OF STRUCTURES AND POINTERS, INTRODUCTION TO SPECIAL FEATURES OF C OBJECTIVE: Learn : Usage of structures, unions  a conventional tool for handling a
More information1 The Java Virtual Machine
1 The Java Virtual Machine About the Spec Format This document describes the Java virtual machine and the instruction set. In this introduction, each component of the machine is briefly described. This
More informationJava Programming. Binnur Kurt binnur.kurt@ieee.org. Istanbul Technical University Computer Engineering Department. Java Programming. Version 0.0.
Java Programming Binnur Kurt binnur.kurt@ieee.org Istanbul Technical University Computer Engineering Department Java Programming 1 Version 0.0.4 About the Lecturer BSc İTÜ, Computer Engineering Department,
More informationCommon Data Structures
Data Structures 1 Common Data Structures Arrays (single and multiple dimensional) Linked Lists Stacks Queues Trees Graphs You should already be familiar with arrays, so they will not be discussed. Trees
More informationIntroduction to Data Structures
Introduction to Data Structures Albert Gural October 28, 2011 1 Introduction When trying to convert from an algorithm to the actual code, one important aspect to consider is how to store and manipulate
More informationPROBLEM SOLVING SEVENTH EDITION WALTER SAVITCH UNIVERSITY OF CALIFORNIA, SAN DIEGO CONTRIBUTOR KENRICK MOCK UNIVERSITY OF ALASKA, ANCHORAGE PEARSON
PROBLEM SOLVING WITH SEVENTH EDITION WALTER SAVITCH UNIVERSITY OF CALIFORNIA, SAN DIEGO CONTRIBUTOR KENRICK MOCK UNIVERSITY OF ALASKA, ANCHORAGE PEARSON Addison Wesley Boston San Francisco New York London
More informationIntroduction to Programming System Design. CSCI 455x (4 Units)
Introduction to Programming System Design CSCI 455x (4 Units) Description This course covers programming in Java and C++. Topics include review of basic programming concepts such as control structures,
More informationUniversidad Carlos III de Madrid
Universidad Carlos III de Madrid Algorithms and Data Structures (ADS) Bachelor in Informatics Engineering Computer Science Department Lists, Stacks and Queues. Authors: Isabel Segura Bedmar April 2011
More informationQuiz 4 Solutions EECS 211: FUNDAMENTALS OF COMPUTER PROGRAMMING II. 1 Q u i z 4 S o l u t i o n s
Quiz 4 Solutions Q1: What value does function mystery return when called with a value of 4? int mystery ( int number ) { if ( number
More informationAnalysis of a Search Algorithm
CSE 326 Lecture 4: Lists and Stacks 1. Agfgd 2. Dgsdsfd 3. Hdffdsf 4. Sdfgsfdg 5. Tefsdgass We will review: Analysis: Searching a sorted array (from last time) List ADT: Insert, Delete, Find, First, Kth,
More informationAlgorithms and Abstract Data Types
Algorithms and Abstract Data Types Informally, algorithm means is a welldefined computational procedure that takes some value, or set of values, as input and produces some other value, or set of values,
More informationCS 111 Classes I 1. Software Organization View to this point:
CS 111 Classes I 1 Software Organization View to this point: Data Objects and primitive types Primitive types operators (+, /,,*, %). int, float, double, char, boolean Memory location holds the data Objects
More informationChapter 2: Elements of Java
Chapter 2: Elements of Java Basic components of a Java program Primitive data types Arithmetic expressions Type casting. The String type (introduction) Basic I/O statements Importing packages. 1 Introduction
More information5. A full binary tree with n leaves contains [A] n nodes. [B] log n 2 nodes. [C] 2n 1 nodes. [D] n 2 nodes.
1. The advantage of.. is that they solve the problem if sequential storage representation. But disadvantage in that is they are sequential lists. [A] Lists [B] Linked Lists [A] Trees [A] Queues 2. The
More informationCompuScholar, Inc. Alignment to Utah's Computer Programming II Standards
CompuScholar, Inc. Alignment to Utah's Computer Programming II Standards Course Title: TeenCoder: Java Programming Course ISBN: 978 0 9887070 2 3 Course Year: 2015 Note: Citation(s) listed may represent
More informationLinked Lists Linked Lists, Queues, and Stacks
Linked Lists Linked Lists, Queues, and Stacks CSE 10: Introduction to C Programming Fall 200 Dynamic data structure Size is not fixed at compile time Each element of a linked list: holds a value points
More informationStack Allocation. RunTime Data Structures. Static Structures
RunTime Data Structures Stack Allocation Static Structures For static structures, a fixed address is used throughout execution. This is the oldest and simplest memory organization. In current compilers,
More informationInterpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Treebased interpreters. Textbased interpreters
Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of datastructure.
More informationStacks. Data Structures and Data Types. Collections
Data Structures and Data Types Data types Set values. Set operations on those values. Some are built in to Java: int, double, char,... Most are not: Complex, Picture, Charge, Stack, Queue, Graph,... Data
More informationData Structure with C
Subject: Data Structure with C Topic : Tree Tree A tree is a set of nodes that either:is empty or has a designated node, called the root, from which hierarchically descend zero or more subtrees, which
More informationCmpSci 187: Programming with Data Structures Spring 2015
CmpSci 187: Programming with Data Structures Spring 2015 Lecture #12 John Ridgway March 10, 2015 1 Implementations of Queues 1.1 Linked Queues A Linked Queue Implementing a queue with a linked list is
More information2) Write in detail the issues in the design of code generator.
COMPUTER SCIENCE AND ENGINEERING VI SEM CSE Principles of Compiler Design UnitIV Question and answers UNIT IV CODE GENERATION 9 Issues in the design of code generator The target machine Runtime Storage
More informationCS 2112 Spring 2014. 0 Instructions. Assignment 3 Data Structures and Web Filtering. 0.1 Grading. 0.2 Partners. 0.3 Restrictions
CS 2112 Spring 2014 Assignment 3 Data Structures and Web Filtering Due: March 4, 2014 11:59 PM Implementing spam blacklists and web filters requires matching candidate domain names and URLs very rapidly
More informationData Structures and Algorithms Stacks and Queues
Data Structures and Algorithms Stacks and Queues Chris Brooks Department of Computer Science University of San Francisco Department of Computer Science University of San Francisco p.1/23 60: Stacks and
More informationSystem Software Prof. Dr. H. Mössenböck
System Software Prof. Dr. H. Mössenböck 1. Memory Management 2. Garbage Collection 3. Linkers and Loaders 4. Debuggers 5. Text Editors Marks obtained by endterm exam http://ssw.jku.at/misc/ssw/ 1. Memory
More informationLecture 1 Introduction to Android
These slides are by Dr. Jaerock Kwon at. The original URL is http://kettering.jrkwon.com/sites/default/files/20112/ce491/lecture/alecture01.pdf so please use that instead of pointing to this local copy
More informationLast not not Last Last Next! Next! Line Line Forms Forms Here Here Last In, First Out Last In, First Out not Last Next! Call stack: Worst line ever!
ECE 551 C++ Programming, Data structures, and Algorithms Abstract Data Type: Stack Last In First Out (LIFO) 1 2 2 1 4 3 1 3 4 Stacks in Programming Worst line ever! 5 3 1 5 Stacks are not useful for waiting
More informationWhy? A central concept in Computer Science. Algorithms are ubiquitous.
Analysis of Algorithms: A Brief Introduction Why? A central concept in Computer Science. Algorithms are ubiquitous. Using the Internet (sending email, transferring files, use of search engines, online
More informationObject Oriented Software Design
Object Oriented Software Design Introduction to Java  II Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 28, 2010 G. Lipari (Scuola Superiore Sant Anna) Introduction
More informationJava 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition
Java 6 'th edition Concepts INTERNATIONAL STUDENT VERSION CONTENTS PREFACE vii SPECIAL FEATURES xxviii chapter i INTRODUCTION 1 1.1 What Is Programming? 2 J.2 The Anatomy of a Computer 3 1.3 Translating
More informationC Compiler Targeting the Java Virtual Machine
C Compiler Targeting the Java Virtual Machine Jack Pien Senior Honors Thesis (Advisor: Javed A. Aslam) Dartmouth College Computer Science Technical Report PCSTR98334 May 30, 1998 Abstract One of the
More informationBinary Heap Algorithms
CS Data Structures and Algorithms Lecture Slides Wednesday, April 5, 2009 Glenn G. Chappell Department of Computer Science University of Alaska Fairbanks CHAPPELLG@member.ams.org 2005 2009 Glenn G. Chappell
More informationPES Institute of TechnologyBSC QUESTION BANK
PES Institute of TechnologyBSC Faculty: Mrs. R.Bharathi CS35: Data Structures Using C QUESTION BANK UNIT I BASIC CONCEPTS 1. What is an ADT? Briefly explain the categories that classify the functions
More informationComputing Concepts with Java Essentials
2008 AGIInformation Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Computing Concepts with Java Essentials 3rd Edition Cay Horstmann
More informationStorage Classes CS 110B  Rule Storage Classes Page 181 \handouts\storclas
CS 110B  Rule Storage Classes Page 181 Attributes are distinctive features of a variable. Data type, int or double for example, is an attribute. Storage class is another attribute. There are four storage
More informationAbstract Data Type. EECS 281: Data Structures and Algorithms. The Foundation: Data Structures and Abstract Data Types
EECS 281: Data Structures and Algorithms The Foundation: Data Structures and Abstract Data Types Computer science is the science of abstraction. Abstract Data Type Abstraction of a data structure on that
More informationOutline. The Stack ADT Applications of Stacks Arraybased implementation Growable arraybased stack. Stacks 2
Stacks Outline The Stack ADT Applications of Stacks Arraybased implementation Growable arraybased stack Stacks 2 Abstract Data Types (ADTs) An abstract data type (ADT) is an abstraction of a data structure
More informationData Structure and Algorithm I Midterm Examination 120 points Time: 9:10am12:10pm (180 minutes), Friday, November 12, 2010
Data Structure and Algorithm I Midterm Examination 120 points Time: 9:10am12:10pm (180 minutes), Friday, November 12, 2010 Problem 1. In each of the following question, please specify if the statement
More informationClasses and Pointers: Some Peculiarities (cont d.)
Classes and Pointers: Some Peculiarities (cont d.) Assignment operator Builtin assignment operators for classes with pointer member variables may lead to shallow copying of data FIGURE 322 Objects objectone
More informationObject Oriented Software Design
Object Oriented Software Design Introduction to Java  II Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa September 14, 2011 G. Lipari (Scuola Superiore Sant Anna) Introduction
More informationHome Page. Data Structures. Title Page. Page 1 of 24. Go Back. Full Screen. Close. Quit
Data Structures Page 1 of 24 A.1. Arrays (Vectors) nelement vector start address + ielementsize 0 +1 +2 +3 +4... +n1 start address continuous memory block static, if size is known at compile time dynamic,
More informationCourse MS10975A Introduction to Programming. Length: 5 Days
3 Riverchase Office Plaza Hoover, Alabama 35244 Phone: 205.989.4944 Fax: 855.317.2187 EMail: rwhitney@discoveritt.com Web: www.discoveritt.com Course MS10975A Introduction to Programming Length: 5 Days
More informationA binary search tree or BST is a binary tree that is either empty or in which the data element of each node has a key, and:
Binary Search Trees 1 The general binary tree shown in the previous chapter is not terribly useful in practice. The chief use of binary trees is for providing rapid access to data (indexing, if you will)
More informationData Structures and Data Manipulation
Data Structures and Data Manipulation What the Specification Says: Explain how static data structures may be used to implement dynamic data structures; Describe algorithms for the insertion, retrieval
More informationThe Set Data Model CHAPTER 7. 7.1 What This Chapter Is About
CHAPTER 7 The Set Data Model The set is the most fundamental data model of mathematics. Every concept in mathematics, from trees to real numbers, is expressible as a special kind of set. In this book,
More informationJava the UML Way: Integrating ObjectOriented Design and Programming
Java the UML Way: Integrating ObjectOriented Design and Programming by Else Lervik and Vegard B. Havdal ISBN 0470843861 John Wiley & Sons, Ltd. Table of Contents Preface xi 1 Introduction 1 1.1 Preliminaries
More informationUniversity of Twente. A simulation of the Java Virtual Machine using graph grammars
University of Twente Department of Computer Science A simulation of the Java Virtual Machine using graph grammars Master of Science thesis M. R. Arends, November 2003 A simulation of the Java Virtual Machine
More informationLINKED DATA STRUCTURES
LINKED DATA STRUCTURES 1 Linked Lists A linked list is a structure in which objects refer to the same kind of object, and where: the objects, called nodes, are linked in a linear sequence. we keep a reference
More informationALLIED PAPER : DISCRETE MATHEMATICS (for B.Sc. Computer Technology & B.Sc. Multimedia and Web Technology)
ALLIED PAPER : DISCRETE MATHEMATICS (for B.Sc. Computer Technology & B.Sc. Multimedia and Web Technology) Subject Description: This subject deals with discrete structures like set theory, mathematical
More informationSoftware Engineering Techniques
Software Engineering Techniques Low level design issues for programminginthelarge. Software Quality Design by contract Pre and post conditions Class invariants Ten do Ten do nots Another type of summary
More informationJava CPD (I) Frans Coenen Department of Computer Science
Java CPD (I) Frans Coenen Department of Computer Science Content Session 1, 12:4514:30 (First Java Programme, Inheritance, Arithmetic) Session 2, 14:4516:45 (Input and Programme Constructs) Materials
More informationBasic Programming and PC Skills: Basic Programming and PC Skills:
Texas University Interscholastic League Contest Event: Computer Science The contest challenges high school students to gain an understanding of the significance of computation as well as the details of
More informationName: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.
Name: Class: Date: Exam #1  Prep True/False Indicate whether the statement is true or false. 1. Programming is the process of writing a computer program in a language that the computer can respond to
More informationThe C Programming Language course syllabus associate level
TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming
More informationFundamentals of Programming and Software Development Lesson Objectives
Lesson Unit 1: INTRODUCTION TO COMPUTERS Computer History Create a timeline illustrating the most significant contributions to computing technology Describe the history and evolution of the computer Identify
More informationAtmiya Infotech Pvt. Ltd. Data Structure. By Ajay Raiyani. Yogidham, Kalawad Road, Rajkot. Ph : 572365, 576681 1
Data Structure By Ajay Raiyani Yogidham, Kalawad Road, Rajkot. Ph : 572365, 576681 1 Linked List 4 Singly Linked List...4 Doubly Linked List...7 Explain Doubly Linked list: ...7 Circular Singly Linked
More informationKITES TECHNOLOGY COURSE MODULE (C, C++, DS)
KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php info@kitestechnology.com technologykites@gmail.com Contact:  8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL
More informationProgramming by Contract. Programming by Contract: Motivation. Programming by Contract: Preconditions and Postconditions
COMP209 Object Oriented Programming Designing Classes 2 Mark Hall Programming by Contract (adapted from slides by Mark Utting) Preconditions Postconditions Class invariants Programming by Contract An agreement
More informationFunctional Programming
FP 2005 1.1 3 Functional Programming WOLFRAM KAHL kahl@mcmaster.ca Department of Computing and Software McMaster University FP 2005 1.2 4 What Kinds of Programming Languages are There? Imperative telling
More informationCourse Title: Software Development
Course Title: Software Development Unit: Customer Service Content Standard(s) and Depth of 1. Analyze customer software needs and system requirements to design an information technologybased project plan.
More informationPersistent Binary Search Trees
Persistent Binary Search Trees Datastructures, UvA. May 30, 2008 0440949, Andreas van Cranenburgh Abstract A persistent binary tree allows access to all previous versions of the tree. This paper presents
More informationIntroduction to Java Applications. 2005 Pearson Education, Inc. All rights reserved.
1 2 Introduction to Java Applications 2.2 First Program in Java: Printing a Line of Text 2 Application Executes when you use the java command to launch the Java Virtual Machine (JVM) Sample program Displays
More informationThomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science updated 03/08/2012 Unit 1: JKarel 8 weeks http://www.fcps.edu/is/pos/documents/hs/compsci.htm
More informationMonitors, Java, Threads and Processes
Monitors, Java, Threads and Processes 185 An objectoriented view of shared memory A semaphore can be seen as a shared object accessible through two methods: wait and signal. The idea behind the concept
More informationStacks and queues. Algorithms and Data Structures, Fall 2011. Rasmus Pagh. Based on slides by Kevin Wayne, Princeton
Algorithms and Data Structures, Fall 2011 Stacks and queues Rasmus Pagh Based on slides by Kevin Wayne, Princeton Algorithms, 4 th Edition Robert Sedgewick and Kevin Wayne Copyright 2002 2011 Stacks and
More informationComputer Programming I
Computer Programming I COP 2210 Syllabus Spring Semester 2012 Instructor: Greg Shaw Office: ECS 313 (Engineering and Computer Science Bldg) Office Hours: Tuesday: 2:50 4:50, 7:45 8:30 Thursday: 2:50 4:50,
More informationFirst Bytes Programming Lab 2
First Bytes Programming Lab 2 This lab is available online at www.cs.utexas.edu/users/scottm/firstbytes. Introduction: In this lab you will investigate the properties of colors and how they are displayed
More informationJava's garbagecollected heap
Sponsored by: This story appeared on JavaWorld at http://www.javaworld.com/javaworld/jw081996/jw08gc.html Java's garbagecollected heap An introduction to the garbagecollected heap of the Java
More information