รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL 01076249 Data Structures & Algorithms : Stack & Queue 1 Stack & Queue Lecturers : Boontee Kruatrachue.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Bansomdej Chaopraya Rajabhat University
Advertisements

รายวิชา ง40206 โครงสร้างข้อมูลและขั้นตอนวิธี
Data Structures and Algorithms
โครงสร้างข้อมูลแบบรายการโยง (Linked Lists) Data Structures and Algorithms อ. ธารารัตน์ พวงสุวรรณ คณะวิทยาศาสตร์และศิลปศาสตร์ มหาวิทยาลัยบูรพา วิทยาเขตสารสนเทศจันทบุรี
Stack.
Stack Holidays/seasonal content.
Data structure & Algorithms
บรรยายครั้งที่ 3: Queue
Linked-List (รายการโยง)
คิวQueue Circular Queue.
โครงสร้างข้อมูลแบบคิว
คิว ลักษณะการทำงานของ Queue การดำเนินการของ Queue การตรวจสอบ Queue
สแตค(stack) โครงสร้างข้อมูลแบบ Stack - การสร้าง Stack
โครงสร้างควบคุมการทำงาน
คิว (Queue) Queue ADT Queue เป็น List ชนิดหนึ่ง แต่สำหรับ queue การแทรกข้อมูลลงบน queue (Insertion) จะทำที่ปลายใดปลายหนึ่งของ Queue ในขณะที่การลบข้อมูลออกจากคิว.
STACK ADT By Pantharee S.. Stack Model  A list with the restriction that insertions deletions can be performed in only one position (LIFO)  Push – insert.
List ADTs By Pantharee S..
การสร้าง WebPage ด้วย Java Script Wachirawut Thamviset.
Chapter 3 Simple Supervised learning
บทที่ 5 Link List Link List.
กองซ้อน ยอดกองซ้อน (stack).
โครงสร้างข้อมูลแบบกองซ้อน (Stack)
หลักสูตรอบรมครู คอมพิวเตอร์ หลักสูตรอบรมครู คอมพิวเตอร์ หลักสูตรที่ ๑ ทักษะการโปรแกรม เบื้องต้น วันที่สาม.
Java collection framework
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
โครงสร้างข้อมูล Queues
Programming & Algorithm
 How do we improve the test?  Why do we have to improve the test?
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
ว เคมีพื้นฐาน พันธะเคมี
ครูรุจิรา ทับศรีนวล “Room service”. “Room service”
Click when ready Wang991.wordpress.com © All rights reserved Stand SW 100.
ครูรุจิรา ทับศรีนวล Important birthdays ครูรุจิรา ทับศรีนวล.
ภาษาอังกฤษ ชั้นมัธยมศึกษาปึที่ 4 Grammar & Reading ครูรุจิรา ทับศรีนวล.
Linked List (2) Sanchai Yeewiyom School of Information & Communication Technology University of Phayao.
1 exit() and break C++ provides a way to leave a program early (before its natural finish) with the exit() function. The format of exit() is as follows:
Collections. Data structures Data Structures ( โครงสร้างข้อมูล ) เกิดจากการ นำข้อมูลขั้นพื้นฐานที่แบ่งแยกไม่ได้ (atomic data type) เช่น int, char, double.
QueueQueue Lecturer : Kritawan Siriboon, Room no. 913 Text : Data Structures & Algorithm Analysis in C, C++,… Mark Allen Weiss, Addison Wesley.
Linked List ( ต่อ ) Lecturer : Kritawan Siriboon, Room no. 913 Text : Data Structures & Algorithm Analysis in C, C++,… Mark Allen Weiss, Addison Wesley.
Queue Sanchai Yeewiyom School of Information & Communication Technology University of Phayao.
Queue Lecturer : Kritawan Siriboon, Room no. 913
D 2 E 1 S E M N G ม. I G I T Grammar A L 4.0.
List, Stack, Queue 2018/9/21.
Mark Allen Weiss, Addison Wesley
Linked List.
Mark Allen Weiss, Addison Wesley
Queue [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
INC 161 , CPE 100 Computer Programming
Data Structure & Algorithm Concept
Linked List.
1. นี่เป็นสิ่งที่พระเยซูทรงทำ พระองค์ทรงรักษาทุกคน ที่เจ็บป่วยให้หายดี
Stack Sanchai Yeewiyom
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913
STACK สแตก(stack) เป็นโครงสร้างข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านเดียว ดังนั้น ข้อมูลที่เข้าไปอยู่ใน stack ก่อนจะออกจาก stack.
Linked List Lecturer : Kritawan Siriboon, Room no. 913
บทที่ 1 ความรู้เบื้องต้น เกี่ยวกับระบบสารสนเทศ
Queue [2] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
คำเทศนาชุด: ท่านมีของประทาน
Lecture no. 1: Introduction to Computer and Programming
Linked List (ต่อ) Lecturer : Kritawan Siriboon, Room no. 913
ที่มาและหน่วยงานกาชาดต่างๆ
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 05: การวิเคราะห์ความซับซ้อนของ ขั้นตอนวิธีการเรียงลำดับข้อมูล.
Data Structures & Algorithms Using Python
แล้วไงเกี่ยวกับความจริง What About Truth?
Data Structures and Algorithms 2/2561
โครงการสัมมนาเชิงปฏิบัติการบูรณาการภาครัฐและเอกชนในการจัดยุทธศาสตร์เศรษฐกิจภาคตะวันออก This template can be used as a starter file to give updates for.
การวิเคราะห์โจทย์ปัญหา (Problem Analysis)
Stack (Push Down Stack)
ใบสำเนางานนำเสนอ:

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 1 Stack & Queue Lecturers : Boontee Kruatrachue Room no. 913 Kritawan Siriboon Room no. 913 Text : Data Structures & Algorithm Analysis in C, C++,… Mark Allen Weiss, Addison Wesley

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 2 Stack Lecturers : Boontee Kruatrachue Room no. 913 Kritawan Siriboon Room no. 913 Text : Data Structures & Algorithm Analysis in C, C++,… Mark Allen Weiss, Addison Wesley

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 3 Stack An ordered collection of items. One end is called a top of the stack. Items are inserted onto the top of the stack. => push Items are deleted from the top of the stack. => pop top pop push LIFO List ( LastInFirstOut )

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 4 Stack Implementations 1.Array Implementation 2.Linked Stack

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 5 Array Implementation How can we make a stack? What is it? An ordered collection of items. An array What data type can we use? 1.What can keep many items? 2.What can make items in ordered? Now, we have place for items of a stack. Next, can stack operations be done?

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 6 Stack Top With array, can we do stack operations, push, pop,...? Where can we push? Why? At index We push on the top. int top; What type of data can be top? Where is the top element in each picture?At index 2,3. We need a data structure for top.

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 7 Stack Data Structure typedef char T; #define SIZE 6 //constant SIZE T item[SIZE]; int top; itemABC CBACBA top= top =

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 8 Stack Operations

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 9 push( ) CBACBA top = DCBADCBA top = 3 ++ top; item[top] = i; push D item[++top] = i; What if the array is full ? Check Overflow

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 10 pop( ) DCBADCBA top=3 DCBADCBA pop D int oldTop = top; top --; return item[oldTop]; return item[top--]; oldTop= top= What if the array is empty ? Check Underflow Need to erase D? No. Only change top. No. Only change top.

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 11 isEmpty( ) CBACBA top = C B A top = -1 return (top==-1); Try pop until empty What happens when stack empty? top =

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 12 init( ) ++ top; item[top] = ‘A’; top = test : push(A) A Before pushing, a stack is empty top = -1

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 13 isFull( ) top = SIZE What happens when stack full? top = DCBADCBA return (top==SIZE);

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 14 Stack Implementations 1.Array Implementation 2.Linked Stack

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 15 top Check if it support every operations. Linked Stack

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 16 Queue Lecturers : Boontee Kruatrachue Room no. 913 Kritawan Siriboon Room no. 913 Text : Data Structures & Algorithm Analysis in C, C++,… Mark Allen Weiss, Addison Wesley

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 17 Queue An ordered collection of items. There are 2 ends, head (front) and tail (rear). Items are inserted to the head (front). => enQueue Items are deleted from the tail (rear). => deQueue แถวคอ ย FIFO List FirstInFirstOut FIFO List FirstInFirstOut front / head rear/tail enQueue deQueue

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 18 Queue Implementations 1.Linked Queue 2.Array Implementation

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 19 front rear Support every operations ? Linked Queue frontrear front rear How do they link? Every operations ?

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 20 Queue Implementations 1.Linked Queue 2.Array Implementation

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 21 C D E f r Array Implementation Not full. But cannot enqueue ! A B No place left at the rear side ! Can we enqueue at the other side ? Think as an array is a circle. Straight array C D E 1 0 f = = r Circular array

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 22 Array Implementation r++ does not work ! C D E 1 0 f = = r#define SIZE 5 if (r == (SIZE -1)) r = 0; else r++; void increase(int &r) Also f++ does not work ! if (i == (SIZE -1)) i = 0; else i++; void increase(int &i)

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 23 isEmpty( ), isFull( ) r = f = r r = f = f A B r f f r f f isEmpty( ), can’t just check r>f ? or f>r ? It’s circular. Also can’t for isFull( ) E

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 24 isEmpty( ) / isFull( ) Solution #define MAX 50 typedef int T; struct queue{ T data[MAX]; int front, rear; int count; }; enQ deQ init isFull isEmpty count++ count-- count = 0 count == SIZE count == 0

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 25 Queue Operations 1.enQ 2.isFull 3.deQ 4.isEmpty 5.init

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 26 Algorithms

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 27 Stack Applications Parenthesis Matching Evaluate Postfix Expression Infix to Postfix Conversion (Reverse Polish Notation) Function Call (clearly see in recursion)

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 28 Parenthesis Matching Are the parenthesises correct? (a+b-c)*[d+e]/{f*(g+h)} [(a+b-c}*[d+e]/{f*(g+h)} (a+b-c *[d+e]/{f*(g+h) }

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 29 Parenthesis Matching Match ? Count : [ { ( ] } ) ? No. We can do it since we were young. How ? [ (a+b)*{ (d+e)-3}]

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 30 Parenthesis Matching Simulate what you do. [ (a+b)*{ (d+e)-3}] random 1.Random position (until found match?). 2.Scan out both ways. 3.if Left side = open paren & Right side = close paren. 4. If match : 5.Check out. 6.goto 2 7. else end process. 8.else goto 1 / / / / ↑ ↑ // / / How to program this algorithm ? What data structures are needed ? Difficult !

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 31 Parenthesis Matching [ ( ) { ( ) }] [ (a+b)*{ (d+e)-3}] Clear out what are irrelevant. Parenthesis matching’s nature is stack. How ? The close parenthesis matches the previous open parenthesis. [ ( ) { ( ) }]

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 32 Parenthesis Matching [ (a+b)*{ (d+e)-3}] Scan left to right. Open paren : push to a stack. Close paren : check if match ? with top in stack. match pop out. else done : not match ! ↑ ( { [ (

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 33 Warnier-Orr Diagram Design Tool Paren matching Init empty stack s Scan (not EOF && not error) read ch ch = open paren + ch = close paren s.push(ch) s.empty() + s.empty() error =true(no match-open-paren) open = s.pop() error = true (missmatch) notmatch(open,ch) error=false error + error no match-open-paren / missmatch MATCH open paren exceed s.empty() + s.empty() ch = non_paren match(open,ch) [ (a+b)*{ (d+e)-3}] ( [

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 34 Warnier-Orr Diagram Design Tool Paren matching Init empty stack s Scan (not EOF && not error) read ch ch = open paren + ch = close paren s.push(ch) s.empty() + s.empty() error =true(no match-open-paren) open = s.pop() error = true (missmatch) notmatch(open,ch) error=false error + error no match-open-paren / missmatch MATCH open paren exceed s.empty() + s.empty()

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 35 Stack Applications Parenthesis Matching Evaluate Postfix Expression Infix to Postfix Conversion (Reverse Polish Notation) Function Call (clearly see in recursion)

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 36 Evaluate Postfix Notation Infix Form Prefix Form Postfix Form (Polish notation) a + b + a b a b + a + b * c + a * b ca b c * +

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue * * = ? input: 6523 input: + Push : 6, 5, 2, 3 o2 <- pop#1 o1 <- pop#2 push S What ‘s next ? Evaluate Postfix Notation S

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue * * = ? input: 6523 Push : s input: + pop#1 → 3 pop#2 → 2 5 push s input: 88 push input: * pop#1 → 8 40 pop#2 → 5 5 push 5*86 input: - pop#1 → 40 pop#2 → push input: 3 push input: + pop#1 → 3 pop#2 → push input: * pop#1 → -32 pop#2 → 6 push 6 *

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 39 Stack Applications Parenthesis Matching Evaluate Postfix Expression Infix to Postfix Conversion (Reverse Polish Notation) Function Call (clearly see in recursion)

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 40 Infix to Postfix Conversion ab*c+a output stack b c+ * a*b+c ===>

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 41 Infix to Postfix Conversion a*b+c ---- > input: stack: output: a*b+ca a*b+c *a a*b+c *ab a*b+c +ab* a*b+c +ab*c a*b+cab*c+ ab*c+

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 42 Infix to Postfix Conversion a+b*c ---- > input: stack: output: a+b*ca a+b*c +a a+b*c +ab * * a+b*c +abc a+b*cabc*+ abc*+

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 43 input:stack: output: a+b*c-da a+b*c-d +a a+b*c-d +ab * * a+b*c-d +abc a+b*c-d -abc*+ a+b*c-d -abc*+d a+b*c-dabc*+d- abc*+d- a+b*c-d => Infix to Postfix Conversion

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 44 Infix to Postfix Conversion a+b*c-(d/e+f)*g +ab * a+b*c-(d/e+f)*g +abc a+b*c-(d/e+f)*g -abc*+ ( a+b*c-(d/e+f)*g -abc*+d / ( a+b*c-(d/e+f)*g -abc*+de abc*+de/f+g*- a+b*c-(d/e+f)*g =>

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 45 Infix to Postfix Conversion (cont.) a+b*c-(d/e+f)*g => / ( a+b*c-(d/e+f)*g -abc*+de + ( a+b*c-(d/e+f)*g -abc*+de/f a+b*c-(d/e+f)*g -abc*+de/f+ * a+b*c-(d/e+f)*g -abc*+de/f+g a+b*c-(d/e+f)*g -abc*+de/f+g*- abc*+de/f+g*-

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 46 Stack Applications Parenthesis Matching Evaluate Postfix Expression Infix to Postfix Conversion (Reverse Polish Notation) Function Call (clearly see in recursion)

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 47 void sth(int i){ int x = 3; i = x; } void f() { int k = 8; sth(k); sth( 5); Add1(&k); Ad1(k); } 3 int i = 5; 53 //pass data k f( ) 8 sth( ) i 8 x 3 //pass address //pass by reference Ad1( ) Add1( ) p *p 3 Pass : by Value, Pass Address &. int *p = &k; void Add1(int *p) { (*p)++; } 9 10 void Ad1(int& ref){ ref++; } ref int& ref = k; pass by reference is tecnically the same as pass address but for writing convenience (no dereference) int& ref = k; ref is another name of k int i = k; int i = 5; by Reference (C++) Stack frame Stack top

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 48 Struct Stack void push (int item[], int *pTop, T d ){ (*pTop)++; item[*pTop] = d; } #define SIZE 6 typedef int T; #define SIZE 6 typedef int T; typedef struct stack { T item[SIZE]; int top; } stack; void push (stack *sp, T d){ if (!isFull(*sp)) sp->item[++sp->top] = d; } int main(){ T item[SIZE], item2[SIZE]; int top, top2; init(&top); push( item, &top,5); int main() { stack s, s1; init(&s); push(&s, 5);

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 49 Lab Questions

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 50 Common Misunderstanding int *p = &i; int *p; p = &i; int *s, t, *u; int *s; int t; int *u; *p = &i;  t is int s and u are pointers int *q = p; int *q; q = p; q points to what p points to q p i 8 59

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 51 Lab : Scramble List

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 52 Bottom Up h Lift it. Take the bottom up. Take the bottom up. I I love you very much C++ Where ? h2 t2 t1 Try to print h2. Opps!

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 53 h t1 h2 t2 Riffle Shuffle Riffle Shuffle each node of each packet from the top. put the rest at the back of the result packet. Riffle Shuffle each node of each packet from the top. put the rest at the back of the result packet h t1 h2 t Lift up to 2 packets.

รศ. ดร. บุญธีร์ เครือตราชู รศ. กฤตวัน ศิริบูรณ์ KMITL Data Structures & Algorithms : Stack & Queue 54 h t h2 t2 h t h2 t2 Lift up to 2 packets. Riffle Shuffle Riffle Shuffle each node of each packet from the top. put the rest at the back of the result packet. Riffle Shuffle each node of each packet from the top. put the rest at the back of the result packet.