1 / 45

Asst.Prof.Dr.Surasak Mungsing E-mail: surasak.mu@spu.ac.th

CSC 202 Analysis and Design of Algorithms Lecture 06: Analysis of Algorithm using List, Stack and Queues. Asst.Prof.Dr.Surasak Mungsing E-mail: surasak.mu@spu.ac.th. Stacks. Stack Operation: Push. Stack Operation: Pop. Stack Operation: Top. Stacks.

fahim
Download Presentation

Asst.Prof.Dr.Surasak Mungsing E-mail: surasak.mu@spu.ac.th

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

E N D

Presentation Transcript


  1. CSC 202Analysis and Design of AlgorithmsLecture 06:Analysis of Algorithm using List,StackandQueues Asst.Prof.Dr.SurasakMungsing E-mail: surasak.mu@spu.ac.th

  2. Stacks

  3. Stack Operation: Push

  4. Stack Operation: Pop

  5. Stack Operation: Top

  6. Stacks • Stack operation isLIFO (Last-In, First-Out) • Basic operations of Stack - Adding an element to Stack (Push) - Removing an element from Stack (Pop) - Using an element of Stack (Top) • CreatingaStack - using an array to represent a stack - using a Linked list to represent a Stack

  7. Stack represented by Linked list

  8. Stack represented by Linked list

  9. Stack Operation: Push

  10. Stack Operation: Destroy

  11. Operationsพื้นฐานของStackที่สร้างด้วยLinked list 1.Create stack: allocate memory for stack head node 2.Push stack: add an element to a stack 3.Pop stack: remove an element from a stack 4.Stack top: using the value on the top of stack 5.Empty stack: check whether the stack is empty 6.Full stack:check whether the stack is full 7.Stack count:return number of elements in stack 8.Destroy stack:return all nodes of stack to system

  12. Stack Applications: Balancing Symbols

  13. Stack Applications: Infix to Postfix conversion The conversion time is O(n)

  14. Postfix expression evaluation The evaluation time is O(n)

  15. Backtracking backtracking is a general algorithm for finding all (or some) solutions to some computational problem, that incrementally builds candidates to the solutions, and abandons each partial candidate c ("backtracks") as soon as it determines that c cannot possibly be completed to a valid solution. classic example of the use of backtracking is the eight queens puzzle, that asks for all arrangements of eight queens on a standard chessboard so that no queen attacks any other. an important tool for solving constraint satisfaction problems, such as crosswords, verbal arithmetic, Sudoku, and many other puzzles.

  16. Stack Applications: Backtracking

  17. Stack Applications: Backtracking

  18. Print path to goal Algorithm seekGoal (val map <linked list>) This algorithm determines the path to a desired goal. Pre a graph containing the path Post path printed 1 Stack=createStack 2 pMap= pMap 3 loop (pMap not null AND goalNotFound) 1 if (pMap is goal) 1 set goalNoFound to false 2 else 1 pushStack (stack,pMap) 2 if (pMapis a branch point) 1 loop (more branch point) 1 create branchPoint node 2 pushStack (stack, branchPoint) 3 advance to next node 4 if (emptyStack (stack)) 1 print (There is no path to your goal) 5 else 1 print (The path to your goal is: ) 2 loop (not emptyStack (stack)) 1 popStack (stack, pMap) 2 if (pMap notbranchPoint) 1 print (pMAp->nodeName) 3 print (End of File) 6 destroyStack (stack) end seekGoal Running time is O(|E|+|V|)

  19. Stack Applications: Backtracking

  20. Stack Applications: Backtracking

  21. Eight queens problem Algorithm queen8 (boardSize <integer>) Position chess queens on a game board so that no queen can capture any other queen. Pre boardSize is number of rows & collumns on board Post Queen’ position pointed createStack (stack) Set row to 1 Set col to 0 loop (row <= boardSize) loop(col <= boardSize AND row <= boardSize) add 1 to col if (not garded (row, col)) place queen at board [row] [col] pushStack(stack, [row, col]) add 1 to row set col to 0 loop (col >= boardSize) popStack(stack, [row, col]) remove queen at board[row] [col] printBoard (stack)

  22. Tail Recursion: bad use of recursion /** * Print List from ListNode p onwards. */ Public static void printlist (ListNode p) { /* 1*/ if (p== nul) /* 2*/ return; /* 3*/ system.out.println(p.element); /* 4*/ printList(p.next); } If the list contains 20,000 elements to print, there will be a stack of 20,000 activation records representing the nested calls of line 4. Activation records are typically large, so the program is likely to run out of stack space.

  23. Printing a list without recursion /** * Print List from ListNode p onward */ Public static void printList (ListNode p) { while (true) { if (p== null) return; system.out.println (p.element); p = p.next; { } Removal of tal recursion is so simple that some compilers do it automatically.

  24. Queue • QueueusesFIFO (First-In, First-Out) • Basic operationsofQueue -Enqueue :adding an element to Queue() - Dequeue:removing an element fromQueue() - QueueFront: Returns a reference to the value at the front of a non-empty queue - QueueRear: Returns a reference to the value at the rear of a non-empty queue Implementing a Queue - by an Array - by Linked list

  25. The Queue concept

  26. Operation Enqueue

  27. Operation Dequeue

  28. Operation QueueFront

  29. Operation QueueRear

  30. QueueOperations

  31. Queue implemented by Array

  32. Is queue full?

  33. Circular Queue

  34. Queue implemented by linked list

  35. Queue data structure

  36. Operation algorithmson Queue 1.Create queue:create queue head based on dynamic memory 2.Enqueue:add an element on queue 3.Dequeue: remove an element from queue 4.Queue front:return an element at the front of queue 5.Queue rear: return an element at the rear of queue 6.Empty queue:returns true if queue is empty, else returns false 7.Full queue:returns true if queue is full, else returns false8.Queue count:returns number of elements in queue 9.Destroy queue:returns memory allocated to queue to system

  37. Create and enqueue

  38. Applications of Queue • Queue simulation • Categorizing Data

More Related