Data Structures using OOP C++ Lecture 9
|
|
- Rosa Adams
- 6 years ago
- Views:
Transcription
1 Stack A stack is an ordered group of homogeneous items or elements. The removal of existing items and the addition of new items can take place only at the top of the stack. The stack may be considered an ordered group of items because elements occur in particular sequence organized according to how long they ve been in the stack. The items that have been present in the stack the longest are at the bottom ; the most recent are the top. Because items are added and removed from only(one end) the top of the stack,the last element to be added is the first to be removed; Stack is a LIFO (Last In, First Out) structure. The accessing protocol for stack is summarized as follows: Both to retrieve elements and to store new elements, access only the top of the stack. Application of Stack Stacks are a fundamental data structure. They are used in many applications, including the following : -programming language systems typically use stack to keep track of operation calls.the main program calls operation A, which in turn calls operation B,which in turn calls operation C ;when function C terminates, control goes back to function B; and when function B terminates, control goes back to function A., -Internet Web browsers store the addresses of recently visited sites on a stack. Each time a user visits a new site, that site s address is pushed Asst. Lec. Zainab Mahmood Fadhil Page 1
2 onto the stack of addresses. The browser then allows the user to pop back to previously visited sites using the back button. -You can also use stacks to convert recursive algorithms into nonrecursive algorithms, especially recursive algorithms that are not tail recursive. -Text editors usually provide an undo mechanism that cancels recent editing operations and reverts to former states of a document. This undo operation can be accomplished by keeping text changes in a stack. Stack ADT specification Structure :Elements are added to and removed from the top of the stack. definitions (provided by user) : MAX_ITEMS :Maximum number of items that might be on the stack. ItemType : Data type of the items on the stack. Note : Because C++ arrays begin with the index 0, we need to distinguish between the value of stacktop and the array position indicated by stacktop. If stacktop is 0, the stack is empty; if stacktop is nonzero, then the stack is nonempty and the top element of the stack is given by stacktop - 1. Operations on stack(provided by the ADT) : Push :the operation that adds a new item to the top of stack Adding, or pushing, an element onto the stack is a two-step process. Recall that the value of stacktop indicates the number of elements in the stack, and Asst. Lec. Zainab Mahmood Fadhil Page 2
3 stacktop - 1 gives the position of the top element of the stack. Therefore, the push operation is as follows: 1. Store the newitem in the array component indicated by stacktop. 2. Increment stacktop. pop: the operation that removes the top element from the stack. To remove, or pop, an element from the stack, we simply decrement stacktop by 1. top: return a copy of the top element without removing it ;this operation is used to examine the item at the top of the stack. IsEmpty: Boolean operation to tell whether a stack contains any elements before we pop it. IsFull: Boolean operation to test whether a stack is full before pushing. Asst. Lec. Zainab Mahmood Fadhil Page 3
4 Stack as an ADT #include "stdafx.h" #include<iostream> #include<assert.h> using namespace std; typedef int elemtype; class stack { public: stack(); ~stack(){ delete[]elems ; // destructor bool IsEmpty() const { return top== 0 ; bool IsFull() const { return top == size ; void push (const elemtype &el); elemtype pop(); private: elemtype *elems; int top ; int size ; ; stack::stack() { size = 10; top = 0; elems = new elemtype[size] ; assert(elems) ; void stack::push(const elemtype &el) { assert(!isfull()); elems[top++] = el ; elemtype stack::pop() { assert(!isempty()); return elems[--top]; void main() { stack s ; Asst. Lec. Zainab Mahmood Fadhil Page 4
5 elemtype x; cout << "Enter stack elements : "; for(int k=0;k<10;k++) { cin>>x ; s.push(x); cout<<"stack status: " << (s.isempty()? "empty" : "Not empty"); cout <<"\nstack poped elements: "; for(k=0 ;k<10;k++) { elemtype x=s.pop(); cout<<x<<" " ; cout<<"\nstack status: " << (s.isempty()? "Empty" : "Not empty") << "\n"; Application of Stacks : Postfix Expressions Calculator The usual notation for writing arithmetic expressions is called infix notation, in which the operator is written between the operands. For example, in the expression a + b. In the late 1950s, the Australian philosopher and early computer scientist Charles L. Hamblin proposed a scheme in which operators follow the operands (postfix operators), resulting in the Reverse Polish notation. In fact, many compilers now first translate arithmetic expressions into some form of postfix notation and then translate this postfix expression into machine code. Infix Expression Equivalent Postfix Expression a +b ab + a + b *c ab c * + a * b +c ab * c + (a + b ) *c ab + c * (a _ b) * (c + d) a b _ c d + * (a + b) * (c _ d / e) +f ab + c d e / _ * f + the Asst. Lec. Zainab Mahmood Fadhil Page 5
6 Postfix expressions can be evaluated using the following algorithm: -Scan the expression from left to right. When an operator is found,back up to get the required number of operands, perform the operation, and continue. Consider the following postfix expression: * = 1. Read the first symbol, 6, which is a number. Push the number onto the stack. 2. Read the next symbol, 3, which is a number. Push the number onto the stack. 3. Read the next symbol, +, which is an operator. Because an operator requires two operands to be evaluated, pop the stack twice. Perform the operation and put the result back onto the stack. Perform the operation: op1 + op2 = = Read the next symbol, 2, which is a number. Push the number onto the stack. 5. Read the next symbol, *,which is an operator.because an operator requires two operands to be evaluated, pop the stack twice. Perform the operation and put the result back onto the stack. Perform the operation: op1 * op2 = 9 * 2 = 18. Push the result onto the stack. 6. Scan the next symbol, =, which is the equal sign, indicating the end of the expression. Therefore, print the result. The result of the expression is in the stack, so pop and print are as shown Asst. Lec. Zainab Mahmood Fadhil Page 6
7 stack after pushing 6 stack after pushing 3 stack after popping twice stack after pushing the result of op1+op2 Asst. Lec. Zainab Mahmood Fadhil Page 7
8 stack after pushing 2 stack after poping twice stack after pushing the result of op1*op2 stack after popping the element Asst. Lec. Zainab Mahmood Fadhil Page 8
9 Algorithm :To evaluate the expression -initialize empty stack. - while token remain in the input stream : -Read next token - If token is a number(operand) push it into the stack. - else if token is an operator pop two tokens off the stack,apply the Operator and push the result back onto the stack. -pop the answer off the stack. Evaluate : 54+8* Next token Stack Output None Empty None * 72 Done Empty 72 Asst. Lec. Zainab Mahmood Fadhil Page 9
10 Linked Implementation of Stacks Because an array size is fixed, in the array (linear) representation of a stack, only a fixed number of elements can be pushed onto the stack. If in a program the number of elements to be pushed exceeds the size of the array,the program may terminate in an error. We must overcome these problems. Fig :Empty Linked stack Fig: nonempty linked stack Asst. Lec. Zainab Mahmood Fadhil Page 10
11 Fig : Stack before the push operation fig: stack and newnode stack after the statement newnode -> link = stacktop Asst. Lec. Zainab Mahmood Fadhil Page 11
12 fig : stack after the statement stacktop= newnode Generic Linked Stack as ADT #include "stdafx.h" #include<iostream> #include<cassert> using namespace std; class stack; class Node { friend class stack<type>; private: Type data ; Node<Type> *link; Node(const Type &el); ; Node<Type> ::Node(const Type &el) {this->data =el ; this ->link=0 ; Asst. Lec. Zainab Mahmood Fadhil Page 12
13 class stack{ public : stack() {top= 0 ; ~stack(); bool isempty() const { return top== 0 ; stack& push(const Type &el); Type pop(); void print() const ; private : Node<Type> *top ; ; stack<type> ::~stack (){ Node<Type> *pnode ; while(top) { pnode = top ; top = top ->link ; pnode->link =0 ; delete pnode ; stack<type>& stack<type>::push(const Type &el) { Node<Type> *pnode= new Node<Type>(el); assert(pnode); pnode->link = top ; top= pnode ; return *this ; Type stack<type> ::pop (){ assert(!isempty()); Type temp = top->data ; Node<Type> *pnode = top ; top= top->link ; pnode->link=0 ; delete pnode; return temp; Asst. Lec. Zainab Mahmood Fadhil Page 13
14 void stack<type>::print() const{ Node<Type> *pnode = top ; while(pnode){ cout<<pnode->data <<" "; pnode= pnode->link ; cout<<endl; void main() { stack<int> s; // stack<char> t; // stack<double> d; int a; int n ; cout<<"enter the number of elements: " ; cin >> n ; cout<<"enter the elements: " <<endl; for (int i=0 ; i<n;i++) { cin>> a ; s.push(a); cout<<"current stack: "; s.print(); cout<<"the inverse of the stack is: " ; for( i=0;i<n;i++) cout<<s.pop()<<" " ; cout<<endl<<endl; Asst. Lec. Zainab Mahmood Fadhil Page 14
15 Reversing a Vector using a stack #include "stdafx.h" #include<iostream> #include<cassert> using namespace std; class stack; class Node { friend class stack<type>; private: Type data ; Node<Type> *link; Node(const Type &el); ; Node<Type> ::Node(const Type &el) {this->data =el ; this ->link=0 ; class stack{ public : stack() {top= 0 ; ~stack(); bool isempty() const { return top== 0 ; stack& push(const Type &el); Type pop(); void print() const ; private : Node<Type> *top ; ; stack<type> ::~stack (){ Node<Type> *pnode ; while(top) { pnode = top ; top = top ->link ; pnode->link =0 ; Asst. Lec. Zainab Mahmood Fadhil Page 15
16 delete pnode ; stack<type>& stack<type>::push(const Type &el) { Node<Type> *pnode= new Node<Type>(el); assert(pnode); pnode->link = top ; top= pnode ; return *this ; Type stack<type> ::pop (){ assert(!isempty()); Type temp = top->data ; Node<Type> *pnode = top ; top= top->link ; pnode->link=0 ; delete pnode; return temp; void stack<type>::print() const{ Node<Type> *pnode = top ; while(pnode){ cout<<pnode->data <<" "; pnode= pnode->link ; cout<<endl; void main() { const int n = 5; // Size of vector stack<char> s; char a[n]; cout<<"enter " << n <<" elements: " <<endl; for (int i=0 ; i<n;i++) { cin>> a[i] ; Asst. Lec. Zainab Mahmood Fadhil Page 16
17 s.push(a[i]); cout<<"current Vector: "; for( i=0;i<n;i++) cout<<a[i]<<" "; // Reversing the vector using stack for( i=0;i<n;i++) a[i] = s.pop(); cout<<"\nreversed Vector: "; for( i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl<<endl; Asst. Lec. Zainab Mahmood Fadhil Page 17
IV. Stacks. A. Introduction 1. Consider the 4 problems on pp (1) Model the discard pile in a card game. (2) Model a railroad switching yard
IV. Stacks 1 A. Introduction 1. Consider the problems on pp. 170-1 (1) Model the discard pile in a card game (2) Model a railroad switching yard (3) Parentheses checker () Calculate and display base-two
More informationCSC 222: Computer Programming II. Spring 2004
CSC 222: Computer Programming II Spring 2004 Stacks and recursion stack ADT push, pop, top, empty, size vector-based implementation, library application: parenthesis/delimiter matching run-time
More informationMore Group HW. #ifndef Stackh #define Stackh. #include <cstdlib> using namespace std;
More Group HW The following code is contained in the file ex1stck.h. Fill in the blanks with the C++ statement(s) that will correctly finish the method. Each blank may be filled in with more than one statement.
More informationSTACKS AND QUEUES. Problem Solving with Computers-II
STACKS AND QUEUES Problem Solving with Computers-II 2 Stacks container class available in the C++ STL Container class that uses the Last In First Out (LIFO) principle Methods i. push() ii. iii. iv. pop()
More informationData Structures & Algorithm Analysis. Lecturer: Souad Alonazi
Data Structures & Algorithm Analysis Lec(3) Stacks Lecturer: Souad Alonazi What is a stack? Stores a set of elements in a particular order Stack principle: LAST IN FIRST OUT = LIFO It means: the last element
More informationProgramming Abstractions
Programming Abstractions C S 1 0 6 B Cynthia Lee Today s Topics ADTs Stack Example: Reverse-Polish Notation calculator Queue Example: Mouse Events Stacks New ADT: Stack stack.h template
More informationContainers: Stack. Jordi Cortadella and Jordi Petit Department of Computer Science
Containers: Stack Jordi Cortadella and Jordi Petit Department of Computer Science The Stack ADT A stack is a list of objects in which insertions and deletions can only be performed at the top of the list.
More informationADTs: Stacks and Queues
Introduction to the Stack ADTs: Stack: a data structure that holds a collection of elements of the same type. - The elements are accessed according to LIFO order: last in, first out - No random access
More informationContainers: Stack. The Stack ADT. The Stack ADT. The Stack ADT
Containers: Stack The Stack ADT A stack is a list of objects in which insertions and deletions can only be performed at the top of the list. Also known as LIFO Last In, First Out) push insert an element
More informationStacks and their Applications
Stacks and their Applications Lecture 23 Sections 18.1-18.2 Robb T. Koether Hampden-Sydney College Fri, Mar 16, 2018 Robb T. Koether Hampden-Sydney College) Stacks and their Applications Fri, Mar 16, 2018
More informationADTs Stack and Queue. Outline
Chapter 5 ADTs Stack and Queue Fall 2017 Yanjun Li CS2200 1 Outline Stack Array-based Implementation Linked Implementation Queue Array-based Implementation Linked Implementation Comparison Fall 2017 Yanjun
More informationLecture Data Structure Stack
Lecture Data Structure Stack 1.A stack :-is an abstract Data Type (ADT), commonly used in most programming languages. It is named stack as it behaves like a real-world stack, for example a deck of cards
More information! A data type for which: ! An ADT may be implemented using various. ! Examples:
Stacks and Queues Unit 6 Chapter 19.1-2,4-5 CS 2308 Fall 2018 Jill Seaman 1 Abstract Data Type A data type for which: - only the properties of the data and the operations to be performed on the data are
More information! A data type for which: ! In fact, an ADT may be implemented by various. ! Examples:
Ch. 8: ADTs: Stacks and Queues Abstract Data Type A data type for which: CS 8 Fall Jill Seaman - only the properties of the data and the operations to be performed on the data are specific, - not concerned
More informationCS Data Structure Spring Answer Key- Assignment #3
CS300-201 Data Structure Spring 2012 2013 Answer Key- Assignment #3 Due Sunday, Mar 3 rd. Q1): Find Big-O for binary search algorithm, show your steps. Solution 1- The task is to search for a given value
More informationWentworth Institute of Technology COMP201 Computer Science II Spring 2015 Derbinsky. Stacks and Queues. Lecture 11.
Lecture 11 1 More Data Structures In this lecture we will use a linked list to implement two abstract data types (ADT) An ADT provides the interface, or what a data structure does We can then use code
More information1. Stack Implementation Using 1D Array
Lecture 5 Stacks 1 Lecture Content 1. Stack Implementation Using 1D Array 2. Stack Implementation Using Singly Linked List 3. Applications of Stack 3.1 Infix and Postfix Arithmetic Expressions 3.2 Evaluate
More informationThe Stack and Queue Types
The Stack and Queue Types Hartmut Kaiser hkaiser@cct.lsu.edu http://www.cct.lsu.edu/ hkaiser/fall_2012/csc1254.html 2 Programming Principle of the Day Do the simplest thing that could possibly work A good
More informationStacks. Gaddis 18.1, Molly A. O'Neil CS 2308 :: Spring 2016
Stacks Gaddis 18.1, 18.3 Molly A. O'Neil CS 2308 :: Spring 2016 The Stack ADT A stack is an abstract data type that stores a collection of elements of the same type The elements of a stack are accessed
More informationStacks. Revised based on textbook author s notes.
Stacks Revised based on textbook author s notes. Stacks A restricted access container that stores a linear collection. Very common for solving problems in computer science. Provides a last-in first-out
More informationThe Stack ADT. Stacks. The Stack ADT. The Stack ADT. Set of objects in which the location an item is inserted and deleted is prespecified.
The Stack ADT Stacks Set of objects in which the location an item is inserted and deleted is prespecified Stacks! Insert in order! Delete most recent item inserted! LIFO - last in, first out Stacks 2 The
More informationLIFO : Last In First Out
Introduction Stack is an ordered list in which all insertions and deletions are made at one end, called the top. Stack is a data structure that is particularly useful in applications involving reversing.
More information-The Hacker's Dictionary. Friedrich L. Bauer German computer scientist who proposed "stack method of expression evaluation" in 1955.
Topic 15 Implementing and Using "stack n. The set of things a person has to do in the future. "I haven't done it yet because every time I pop my stack something new gets pushed." If you are interrupted
More informationdouble d0, d1, d2, d3; double * dp = new double[4]; double da[4];
All multiple choice questions are equally weighted. You can generally assume that code shown in the questions is intended to be syntactically correct, unless something in the question or one of the answers
More information15. Stacks and Queues
COMP1917 15s2 15. Stacks and Queues 1 COMP1917: Computing 1 15. Stacks and Queues Reading: Moffat, Section 10.1-10.2 Overview Stacks Queues Adding to the Tail of a List Efficiency Issues Queue Structure
More informationOutline. Introduction Stack Operations Stack Implementation Implementation of Push and Pop operations Applications. ADT for stacks
Stack Chapter 4 Outline Introduction Stack Operations Stack Implementation Implementation of Push and Pop operations Applications Recursive Programming Evaluation of Expressions ADT for stacks Introduction
More informationStacks. Chapter 5. Copyright 2012 by Pearson Education, Inc. All rights reserved
Stacks Chapter 5 Copyright 2012 by Pearson Education, Inc. All rights reserved Contents Specifications of the ADT Stack Using a Stack to Process Algebraic Expressions A Problem Solved: Checking for Balanced
More informationReview: Expressions, Variables, Loops, and more.
Review: Expressions, Variables, Loops, and more. 1 An Expression Evaluator Example [2] Wk02.1 Slide 1 2 Case Study : Parsing PostFix Expressions What is an expression? A series of symbols that return some
More informationChapter 5. ADTs Stack and Queue
Chapter 5 ADTs Stack and Queue Stacks of Coins and Bills Stacks of Boxes and Books TOP OF THE STACK TOP OF THE STACK Logical (or ADT) level: A stack is an ordered group of homogeneous items (elements),
More informationCS Data Structure Spring Answer Key- Assignment #4
CS300-201 Data Structure Spring 2012 2013 Answer Key- Assignment #4 Due Sunday, Mar 3 rd. Q1): Write a program to convert an infix expression that includes (, ), +, -, *, /, and ^ exponentiation operator
More informationSTACKS. A stack is defined in terms of its behavior. The common operations associated with a stack are as follows:
STACKS A stack is a linear data structure for collection of items, with the restriction that items can be added one at a time and can only be removed in the reverse order in which they were added. The
More informationExample:(problem) int a,b cin >> a cin >> b // b = 0
Exceptions Exceptions are unexpected events that occur during the execution of a program. An exception can be the result of an error condition or simply an unanticipated input. Exceptions can be thought
More informationProgramming Abstractions
Programming Abstractions C S 1 0 6 B Cynthia Lee Today s Topics HW Tips QT Creator dos & don ts ADTs Stack Example: Reverse-Polish Notation calculator Queue Event queues QT Creator A F E W W A R N I N
More informationCSE Data Structures and Algorithms... In Java! Stacks. CSE2100 DS & Algorithms 1
CSE 2100 Data Structures and Algorithms... In Java Stacks 1 What is Stack A stack is a collection of objects that are inserted and removed according to the last-in, first-out (LIFO) principle. Internet
More informationLinear Data Structure
Linear Data Structure Definition A data structure is said to be linear if its elements form a sequence or a linear list. Examples: Array Linked List Stacks Queues Operations on linear Data Structures Traversal
More informationCPSC 221: Algorithms and Data Structures Lecture #1: Stacks and Queues
CPSC 221: Algorithms and Data Structures Lecture #1: Stacks and Queues Alan J. Hu (Slides borrowed from Steve Wolfman) Be sure to check course webpage! http://www.ugrad.cs.ubc.ca/~cs221 1 Lab 1 is available.
More informationDefinition of Stack. 5 Linked Structures. Stack ADT Operations. ADT Stack Operations. A stack is a LIFO last in, first out structure.
5 Linked Structures Definition of Stack Logical (or ADT) level: A stack is an ordered group of homogeneous items (elements), in which the removal and addition of stack items can take place only at the
More informationData Structures Week #3. Stacks
Data Structures Week #3 Stacks Outline Stacks Operations on Stacks Array Implementation of Stacks Linked List Implementation of Stacks Stack Applications October 5, 2015 Borahan Tümer, Ph.D. 2 Stacks (Yığınlar)
More informationADT Stack. Inserting and deleting elements occurs at the top of Stack S. top. bottom. Stack S
Stacks Stacks & Queues A linear sequence, or list, is an ordered collection of elements: S = (s 1, s 2,..., s n ) Stacks and queues are finite linear sequences. A Stack is a LIFO (Last In First Out) list.
More informationData Structures and Algorithms
Data Structures and Algorithms Alice E. Fischer Lecture 6: Stacks 2018 Alice E. Fischer Data Structures L5, Stacks... 1/29 Lecture 6: Stacks 2018 1 / 29 Outline 1 Stacks C++ Template Class Functions 2
More informationCHAPTER 3 STACKS AND QUEUES. Iris Hui-Ru Jiang Fall 2008
HAPTER 3 STAKS AND QUEUES Iris Hui-Ru Jiang Fall 2008 2 ontents Templates in ++ Stack (LIFO) Queue (FIFO) Subtyping and Inheritance in ++ A Mazing Problem Evaluation of Expressions Readings hapter 3 ++
More informationStacks and Queues. Chris Kiekintveld CS 2401 (Fall 2010) Elementary Data Structures and Algorithms
Stacks and Queues Chris Kiekintveld CS 2401 (Fall 2010) Elementary Data Structures and Algorithms Two New ADTs Define two new abstract data types Both are restricted lists Can be implemented using arrays
More informationStack ADT. ! push(x) puts the element x on top of the stack! pop removes the topmost element from the stack.
STACK Stack ADT 2 A stack is an abstract data type based on the list data model All operations are performed at one end of the list called the top of the stack (TOS) LIFO (for last-in first-out) list is
More informationStacks, Queues (cont d)
Stacks, Queues (cont d) CSE 2011 Winter 2007 February 1, 2007 1 The Adapter Pattern Using methods of one class to implement methods of another class Example: using List to implement Stack and Queue 2 1
More informationLecture No.04. Data Structures
Lecture No.04 Data Structures Josephus Problem #include "CList.cpp" void main(int argc, char *argv[]) { CList list; int i, N=10, M=3; for(i=1; i
More informationTop of the Stack. Stack ADT
Module 3: Stack ADT Dr. Natarajan Meghanathan Professor of Computer Science Jackson State University Jackson, MS 39217 E-mail: natarajan.meghanathan@jsums.edu Stack ADT Features (Logical View) A List that
More informationADT Sorted List Operations
6 Lists Plus ADT Sorted List Operations Transformers MakeEmpty InsertItem DeleteItem Observers IsFull LengthIs RetrieveItem Iterators ResetList GetNextItem change state observe state process all class
More informationIntroduction to the C programming language
Introduction to the C programming language From C to C++: Stack and Queue Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 23, 2010 Outline 1 From struct to classes
More informationStacks. Ordered list with property: Insertions and deletions always occur at the same end. INSERT DELETE A3 A3 TOP TOP TOP
Stacks Ordered list with property: Insertions and deletions always occur at the same end. INSERT A3 A3 TOP DELETE A2 TOP A2 A2 TOP A1 A1 A1 A0 A0 A0 Stacks Implementation Implementation with arrays: Declare
More informationCPSC 221: Algorithms and Data Structures ADTs, Stacks, and Queues
CPSC 221: Algorithms and Data Structures ADTs, Stacks, and Queues Alan J. Hu (Slides borrowed from Steve Wolfman) Be sure to check course webpage! http://www.ugrad.cs.ubc.ca/~cs221 1 Lab 1 available very
More informationIntroduction to the C programming language
Introduction to the C programming language From C to C++: Stack and Queue Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 23, 2010 Outline 1 From struct to classes
More informationl Determine if a number is odd or even l Determine if a number/character is in a range - 1 to 10 (inclusive) - between a and z (inclusive)
Final Exam Exercises Chapters 1-7 + 11 Write C++ code to: l Determine if a number is odd or even CS 2308 Fall 2016 Jill Seaman l Determine if a number/character is in a range - 1 to 10 (inclusive) - between
More informationthe Stack stack ADT using the STL stack are parentheses balanced? algorithm uses a stack adapting the STL vector class adapting the STL list class
the Stack 1 The Stack Abstract Data Type stack ADT using the STL stack 2 An Application: Test Expressions are parentheses balanced? algorithm uses a stack 3 Stack Implementations adapting the STL vector
More informationAbstract Data Types. Stack. January 26, 2018 Cinda Heeren / Geoffrey Tien 1
Abstract Data Types Stack January 26, 2018 Cinda Heeren / Geoffrey Tien 1 Abstract data types and data structures An Abstract Data Type (ADT) is: A collection of data Describes what data are stored but
More informationTop of the Stack. Stack ADT
Module 3: Stack ADT Dr. Natarajan Meghanathan Professor of Computer Science Jackson State University Jackson, MS 39217 E-mail: natarajan.meghanathan@jsums.edu Stack ADT Features (Logical View) A List that
More informationA First Program - Greeting.cpp
C++ Basics A First Program - Greeting.cpp Preprocessor directives Function named main() indicates start of program // Program: Display greetings #include using namespace std; int main() { cout
More information[CS302-Data Structures] Homework 2: Stacks
[CS302-Data Structures] Homework 2: Stacks Instructor: Kostas Alexis Teaching Assistants: Shehryar Khattak, Mustafa Solmaz, Bishal Sainju Fall 2018 Semester Section 1. Stack ADT Overview wrt Provided Code
More informationCS 216 Exam 1 Fall SOLUTION
CS 216 Exam 1 Fall 2004 - SOLUTION Name: Lab Section: Email Address: Student ID # This exam is closed note, closed book. You will have an hour and fifty minutes total to complete the exam. You may NOT
More informationStacks and Queues. Stack - Abstract Data Type. Stack Applications. Stack - Abstract Data Type - C Interface
Stacks and Queues Stack - Abstract Data Type. Stacks and queues ubiquitous -structure in computing. Part of many important algorithms. Good example of abstract types. Good example to practice programming
More informationDHANALAKSHMI COLLEGE OF ENGINEERING DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING EC6301 OBJECT ORIENTED PROGRAMMING AND DATA STRUCTURES
DHANALAKSHMI COLLEGE OF ENGINEERING DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING EC6301 OBJECT ORIENTED PROGRAMMING AND DATA STRUCTURES UNIT III LINEAR DATA STRUCTURES PART A 1. What is meant by data
More informationCS 106B Lecture 5: Stacks and Queues
CS 106B Lecture 5: Stacks and Queues Monday, July 3, 2017 Programming Abstractions Summer 2017 Stanford University Computer Science Department Lecturer: Chris Gregg reading: Programming Abstractions in
More informationMarch 13/2003 Jayakanth Srinivasan,
Statement Effort MergeSort(A, lower_bound, upper_bound) begin T(n) if (lower_bound < upper_bound) Θ(1) mid = (lower_bound + upper_bound)/ 2 Θ(1) MergeSort(A, lower_bound, mid) T(n/2) MergeSort(A, mid+1,
More informationBasic program The following is a basic program in C++; Basic C++ Source Code Compiler Object Code Linker (with libraries) Executable
Basic C++ Overview C++ is a version of the older C programming language. This is a language that is used for a wide variety of applications and which has a mature base of compilers and libraries. C++ is
More informationIT 4043 Data Structures and Algorithms. Budditha Hettige Department of Computer Science
IT 4043 Data Structures and Algorithms Budditha Hettige Department of Computer Science 1 Syllabus Introduction to DSA Abstract Data Types List Operation Using Arrays Stacks Queues Recursion Link List Sorting
More informationSeptember 19,
September 19, 2013 1 Problems with previous examples Changes to the implementation will require recompilation & relinking of clients Extensions will require access to the source code Solutions Combine
More informationProblem with Scanning an Infix Expression
Operator Notation Consider the infix expression (X Y) + (W U), with parentheses added to make the evaluation order perfectly obvious. This is an arithmetic expression written in standard form, called infix
More informationList, Stack, and Queues
List, Stack, and Queues R. J. Renka Department of Computer Science & Engineering University of North Texas 02/24/2010 3.1 Abstract Data Type An Abstract Data Type (ADT) is a set of objects with a set of
More informationADVANCED DATA STRUCTURES USING C++ ( MT-CSE-110 )
ADVANCED DATA STRUCTURES USING C++ ( MT-CSE-110 ) Unit - 2 By: Gurpreet Singh Dean Academics & H.O.D. (C.S.E. / I.T.) Yamuna Institute of Engineering & Technology, Gadholi What is a Stack? A stack is a
More informationDiscussion 2C Notes (Week 3, January 21) TA: Brian Choi Section Webpage:
Discussion 2C Notes (Week 3, January 21) TA: Brian Choi (schoi@cs.ucla.edu) Section Webpage: http://www.cs.ucla.edu/~schoi/cs32 Abstraction In Homework 1, you were asked to build a class called Bag. Let
More informationStack. 4. In Stack all Operations such as Insertion and Deletion are permitted at only one end. Size of the Stack 6. Maximum Value of Stack Top 5
What is Stack? Stack 1. Stack is LIFO Structure [ Last in First Out ] 2. Stack is Ordered List of Elements of Same Type. 3. Stack is Linear List 4. In Stack all Operations such as Insertion and Deletion
More informationSome Applications of Stack. Spring Semester 2007 Programming and Data Structure 1
Some Applications of Stack Spring Semester 2007 Programming and Data Structure 1 Arithmetic Expressions Polish Notation Spring Semester 2007 Programming and Data Structure 2 What is Polish Notation? Conventionally,
More informationCh. 18: ADTs: Stacks and Queues. Abstract Data Type
Ch. 18: ADTs: Stacks and Queues CS 2308 Fall 2011 Jill Seaman Lecture 18 1 Abstract Data Type A data type for which: - only the properties of the data and the operations to be performed on the data are
More informationCPSC 260 Data Structures and Algorithms for Computer Engineers Linked Lists!
CPSC 260 Data Structures and Algorithms for Computer Engineers Linked Lists! Winter 2013 Instructor: Hassan Khosravi Problems with Arrays and Vectors With arrays and vectors you are allocated a large space.
More informationProgramming Abstractions
Programming Abstractions C S 1 0 6 X Cynthia Lee Today s Topics ADTs Stack Example: Reverse-Polish Notation calculator Queue Example: Mouse Events Stacks New ADT: Stack stack.h template
More informationInfix to Postfix Conversion
Infix to Postfix Conversion Infix to Postfix Conversion Stacks are widely used in the design and implementation of compilers. For example, they are used to convert arithmetic expressions from infix notation
More informationChapter 7: Stacks. Exercises 7.2
hapter 7: Stacks Exercises 7.2 1. mytop == 0; myrray contains 3 elements: 10, 22, 37,?,? but note that only element 10 is considered to be in the stack. 2. mytop == 1; myrray contains 3 elements: 10, 9,
More informationStacks. Access to other items in the stack is not allowed A LIFO (Last In First Out) data structure
CMPT 225 Stacks Stacks A stack is a data structure that only allows items to be inserted and removed at one end We call this end the top of the stack The other end is called the bottom Access to other
More informationCMPT 225. Lecture 9 Stack
CMPT 225 Lecture 9 Stack 1 Last Lecture We did an activity about Stack 2 Learning Outcomes 3 At the end of this lecture (and the activity), a student will be able to: Describe Stack Define public interface
More informationStacks (5.1) Abstract Data Types (ADTs) CSE 2011 Winter 2011
Stacks (5.1) CSE 2011 Winter 2011 26 January 2011 1 Abstract Data Types (ADTs) An abstract data type (ADT) is an abstraction of a data structure An ADT specifies: Data stored Operations on the data Error
More informationCISC-235. At this point we fnally turned our atention to a data structure: the stack
CISC-235 20180918 At this point we fnally turned our atention to a data structure: the stack A stack is our frst example of an Abstract Data Type: we specify the operations we need to be able to perform
More informationData Structure using C++ Lecture 04. Data Structures and algorithm analysis in C++ Chapter , 3.2, 3.2.1
Data Structure using C++ Lecture 04 Reading Material Data Structures and algorithm analysis in C++ Chapter. 3 3.1, 3.2, 3.2.1 Summary Stack Operations on a stack Representing stacks Converting an expression
More informationCSCE 110 PROGRAMMING FUNDAMENTALS
CSCE 110 PROGRAMMING FUNDAMENTALS WITH C++ Prof. Amr Goneid AUC Part 15. Dictionaries (1): A Key Table Class Prof. amr Goneid, AUC 1 Dictionaries(1): A Key Table Class Prof. Amr Goneid, AUC 2 A Key Table
More informationPropedéutico de Programación
Propedéutico de Programación Coordinación de Ciencias Computacionales Semana 4, Tercera Parte Dra. Pilar Gómez Gil Versión 1.1 01.07.08 http://ccc.inaoep.mx/~pgomez/cursos/programacion/ Capítulo 5 ADT
More informationLargest Online Community of VU Students
WWW.VUPages.com WWW.VUTUBE.EDU.PK http://forum.vupages.com Largest Online Community of VU Students MIDTERM EXAMINATION SEMESTER FALL 2003 CS301-DATA STRUCTURE Total Marks:86 Duration: 60min Instructions
More information// The next 4 functions return true on success, false on failure
Stacks and Queues Queues and stacks are two special list types of particular importance. They can be implemented using any list implementation, but arrays are a more practical solution for these structures
More informationAssociate Professor Dr. Raed Ibraheem Hamed
Associate Professor Dr. Raed Ibraheem Hamed University of Human Development, College of Science and Technology Computer Science Department 2015 2016 1 What this Lecture is about: Stack Structure Stack
More informationOutline. Stacks. 1 Chapter 5: Stacks and Queues. favicon. CSI33 Data Structures
Outline Chapter 5: and Queues 1 Chapter 5: and Queues Chapter 5: and Queues The Stack ADT A Container Class for Last-In-First-Out Access A stack is a last in, first out (LIFO) structure, i.e. a list-like
More informationStacks and Their Applications
Chapter 5 Stacks and Their Applications We have been discussing general list structures. In practice, we often work with some restricted cases, in which insertions and/or deletions occur only at one or
More informationCMSC 4023 Chapter 11
11. Topics The Concept of Abstraction Introduction to Data Abstraction Design Issues for Abstract Data Types Language Examples Parameterized Abstract Data Types Encapsulation Constructs Naming Encapsulations
More informationNetworked Embedded System Patterns for C Developers. Overview of C (& C++) Programming Styles. Douglas C. Schmidt
Networked Embedded System Patterns for C Developers Part II: Professor Department of EECS d.schmidt@vanderbilt.edu Vanderbilt University www.dre.vanderbilt.edu/ schmidt/ (615) 343-8197 June 3, 2009 Motivation
More informationCS302 Data Structures using C++
CS302 Data Structures using C++ Midterm Exam Instructor: Dr. Kostas Alexis Teaching Assistants: Shehryar Khattak, Mustafa Solmaz Semester: Fall 2018 Date: November 7 2018 Student First Name Student Last
More informationFormal Languages and Automata Theory, SS Project (due Week 14)
Formal Languages and Automata Theory, SS 2018. Project (due Week 14) 1 Preliminaries The objective is to implement an algorithm for the evaluation of an arithmetic expression. As input, we have a string
More informationStacks Fall 2018 Margaret Reid-Miller
Stacks 15-121 Fall 2018 Margaret Reid-Miller Today Exam 2 is next Tuesday, October 30 Today: Quiz 5 solutions Recursive add from last week (see SinglyLinkedListR.java) Stacks ADT (Queues on Thursday) ArrayStack
More informationData Structures G5029
Data Structures G5029 Lecture 2 Kingsley Sage Room 5C16, Pevensey III khs20@sussex.ac.uk University of Sussex 2006 Lecture 2 Stacks The usual analogy is the stack of plates. A way of buffering a stream
More informationIntroduction. Problem Solving on Computer. Data Structures (collection of data and relationships) Algorithms
Introduction Problem Solving on Computer Data Structures (collection of data and relationships) Algorithms 1 Objective of Data Structures Two Goals: 1) Identify and develop useful high-level data types
More informationLecture 12 ADTs and Stacks
Lecture 12 ADTs and Stacks Modularity Divide the program into smaller parts Advantages Keeps the complexity managable Isolates errors (parts can be tested independently) Can replace parts easily Eliminates
More informationITI Introduction to Computing II
ITI 1121. Introduction to Computing II Queues ArrayQueue Marcel Turcotte School of Electrical Engineering and Computer Science Version of March 10, 2014 Abstract These lecture notes are meant to be looked
More informationCSCE 110 PROGRAMMING FUNDAMENTALS
CSCE 110 PROGRAMMING FUNDAMENTALS WITH C++ Prof. Amr Goneid AUC Part 16. Linked Lists Prof. amr Goneid, AUC 1 Linked Lists Prof. amr Goneid, AUC 2 Linked Lists The Linked List Structure Some Linked List
More informationExercise Solutions Chapter 1
Exercise Solutions Chapter 1 1. a. true; b. false; c. false; d. false; e. false; f. true; g. false; h. false 2. Precondition: The value of x must be nonnegative. Postcondition: If the value of x is nonnegative,
More informationApplication of Stack (Backtracking)
Application of Stack (Backtracking) Think of a labyrinth or maze How do you find a way from an entrance to an exit? Once you reach a dead end, you must backtrack. But backtrack to where? to the previous
More information