Bài giảng Kỹ thuật lập trình: Ngăn xếp và hàng đợi - Nguyễn Minh Huy
lượt xem 3
download
Bài giảng Kỹ thuật lập trình: Ngăn xếp và hàng đợi, được biên soạn gồm các nội dung chính sau Tổng quan về ngăn xếp; tổng quan về hàng đợi. Mời các bạn cùng tham khảo!
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Kỹ thuật lập trình: Ngăn xếp và hàng đợi - Nguyễn Minh Huy
- Ngăn x p và Hàng đ i GV. Nguy n Minh Huy K thu t l p trình - Nguy n Minh Huy 1
- N i dung T ng quan v ngăn x p. p. T ng quan v hàng đ i. i. K thu t l p trình - Nguy n Minh Huy 2
- N i dung T ng quan v ngăn x p.p. T ng quan v hàng đ i. i. K thu t l p trình - Nguy n Minh Huy 3
- T ng quan v ngăn x p Khái ni m ngăn x p: p: Dãy ph n t ho t đ ng theo cơ ch LIFO. Cơ ch LIFO (Last In First Out). (L Th t vào sau ra trư c. c. Vào sau Ra trư c Truy xu t t do M ng 5 7 2 6 5 7 Truy xu t tu n t 2 6 data data head next next NULL Ngăn x p K thu t l p trình - Nguy n Minh Huy 4
- T ng quan v ngăn x p Các thao tác trên ngăn x p: p: push: thêm ph n t . pop: l y ph n t . push pop peek: đ c ph n t . 8 5 empty: ki m tra r ng. ng. peek 5 full: ki m tra đ y. y. 7 2 6 Ngăn x p K thu t l p trình - Nguy n Minh Huy 5
- T ng quan v ngăn x p Cài đ t ngăn x p trong C: Khai báo và kh i t o: o: // Dùng m ng đ ng. ng. // Dùng danh sách liên k t đơn. đơn. struct Stack struct Stack { { int *data; SNode *head; int top; }; int size; }; void stack_init(Stack &s, int initSize) stack_init(Stack initSize) void stack_init(Stack &s) stack_init(Stack { { s.size = initSize; initSize; head = NULL; s.data = new int[initSize]; int[initSize] } s.top = 0; } K thu t l p trình - Nguy n Minh Huy 6
- T ng quan v ngăn x p Cài đ t ngăn x p trong C: Ki m tra r ng và đ y: y: // Dùng m ng đ ng. ng. // Dùng danh sách liên k t đơn. đơn. bool stack_empty(Stack s) stack_empty(Stack bool stack_empty(Stack s) stack_empty(Stack { { return s.top == 0; return s.head == NULL; } } bool stack_full(Stack s) stack_full(Stack { return s.top == size; } K thu t l p trình - Nguy n Minh Huy 7
- T ng quan v ngăn x p Cài đ t ngăn x p trong C: Các thao tác: tác: Thêm ph n t : stack_push. stack_push. Dùng m ng đ ng Dùng danh sách liên k t đơn Thêm đ u x data x next data 5 7 data data head next next NULL top K thu t l p trình - Nguy n Minh Huy 8
- T ng quan v ngăn x p Cài đ t ngăn x p trong C: Các thao tác: tác: L y ph n t : stack_pop. stack_pop. Dùng m ng đ ng Dùng danh sách liên k t đơn data 5 7 2 data data head next next NULL top K thu t l p trình - Nguy n Minh Huy 9
- T ng quan v ngăn x p Cài đ t ngăn x p trong C: Các thao tác: tác: Đ c ph n t : stack_peek. stack_peek. Dùng m ng đ ng Dùng danh sách liên k t đơn data 5 7 2 data data head next next NULL top K thu t l p trình - Nguy n Minh Huy 10
- T ng quan v ngăn x p ng d ng ngăn x p: p: Th c hi n thao tác ngư c: c: Đ i 1 s nguyên sang h nh phân. phân. x = 10 x%2 printf() printf() 1 0 1 0 Ngăn x p K thu t l p trình - Nguy n Minh Huy 11
- T ng quan v ngăn x p ng d ng ngăn x p: p: Cài đ t đ quy: quy: long fibo(int n) fibo( { Dùng ngăn x p h th ng.ng. stack_push(1); stack_push(1); L i stack-overflow. stack- stack_push(1); stack_push(1); Dùng ngăn x p t t o for (int i = 2; i
- N i dung T ng quan v ngăn x p. p. T ng quan v hàng đ i.i. K thu t l p trình - Nguy n Minh Huy 13
- T ng quan v hàng đ i Khái ni m hàng đ i: i: Dãy ph n t ho t đ ng theo cơ ch FIFO. Cơ ch FIFO (First In First Out). (F First Come First Serve. Vào sau ra sau Th t vào trư c ra trư c.c. 5 7 Hàng đ i 2 6 Vào trư c ra trư c K thu t l p trình - Nguy n Minh Huy 14
- T ng quan v hàng đ i Các thao tác trên hàng đ i: i: push: thêm ph n t . pop: l y ph n t . push peek: đ c ph n t . 8 empty: ki m tra r ng. ng. 5 full: ki m tra đ y. y. 7 Hàng đ i 2 peek 6 pop 6 K thu t l p trình - Nguy n Minh Huy 15
- T ng quan v hàng đ i Cài đ t hàng đ i trong C: Khai báo và kh i t o: o: // Dùng m ng đ ng. ng. // Dùng danh sách liên k t đơn. đơn. struct Queue struct Queue { { int *data; CNode *head; int in; CNode *tail; int out; }; int size; }; void queue_init(Queue &s, int initSize) queue_init(Queue initSize) void queue_init(Queue &s) queue_init(Queue { { s.size = initSize; initSize; s.head = NULL; s.data = new int[initSize]; int[initSize] s.tail = NULL; s.in = 0; } s.out = 0; } K thu t l p trình - Nguy n Minh Huy 16
- T ng quan v hàng đ i Cài đ t hàng đ i trong C: Ki m tra r ng và đ y: y: // Dùng m ng đ ng. ng. // Dùng danh sách vòng. vòng. bool queue_empty(Queue s) queue_empty(Queue bool queue_empty(Stack s) queue_empty(Stack { { return s.in == s.out; s.out; return s.head == NULL; } } bool queue_full(Queue s) queue_full(Queue { return s.in == s.size; s.size; } K thu t l p trình - Nguy n Minh Huy 17
- T ng quan v hàng đ i Cài đ t hàng đ i trong C: Các thao tác: tác: Thêm ph n t : queue_push. queue_push. Dùng m ng đ ng Dùng danh sách liên k t đơn Thêm đ u x data x next data 5 7 data data head next next out in data data tail next next K thu t l p trình - Nguy n Minh Huy 18
- T ng quan v hàng đ i Cài đ t hàng đ i trong C: Các thao tác: tác: L y ph n t : queue_pop. queue_pop. Dùng m ng đ ng Dùng danh sách kép data data head next next data 5 7 data data tail next next out in K thu t l p trình - Nguy n Minh Huy 19
- T ng quan v hàng đ i Cài đ t hàng đ i trong C: Các thao tác: tác: Đ c ph n t : queue_peek. queue_peek. Dùng m ng đ ng Dùng danh sách kép data data head next next data 5 7 data data tail next next out in K thu t l p trình - Nguy n Minh Huy 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Kỹ thuật lập trình: Chương V - Lưu Hồng Việt
19 p | 131 | 15
-
Bài giảng Kỹ thuật lập trình C/C++: Chương 10 (1) - Lê Thành Sách
117 p | 48 | 8
-
Bài giảng Kỹ thuật lập trình - Chương 1: Nhập môn về máy tính và lập trình
16 p | 146 | 8
-
Bài giảng Kỹ thuật lập trình – Chương 5: Phong cách lập trình
51 p | 28 | 7
-
Bài giảng Kỹ thuật lập trình cơ bản: Chương 0 – Trần Minh Thái
17 p | 115 | 7
-
Bài giảng Kỹ thuật lập trình: Bài 1 - Phạm Đình Sắc
9 p | 132 | 7
-
Bài giảng Kỹ thuật lập trình: Chương 0 - Trường Đại học Ngoại ngữ - Tin học TP.HCM
7 p | 15 | 6
-
Bài giảng Kỹ thuật lập trình - TS. Vũ Hương Giang
8 p | 120 | 5
-
Bài giảng Kỹ thuật lập trình: Bài 2 - Phạm Đình Sắc
7 p | 117 | 5
-
Bài giảng Kỹ thuật lập trình C/C++ - Chương 1: Tổng quan về giải thuật
26 p | 45 | 4
-
Bài giảng Kỹ thuật lập trình (Programming technique): Chương 1 - Vũ Đức Vượng
68 p | 26 | 4
-
Bài giảng Kỹ thuật lập trình - Chương 10: Tổng kết môn học (Trường Đại học Bách khoa Hà Nội)
67 p | 16 | 4
-
Bài giảng Kỹ thuật lập trình - Chương 1: Tổng quan về kỹ thuật lập trình
45 p | 56 | 3
-
Bài giảng Kỹ thuật lập trình nâng cao: Chương 1 - Trần Minh Thái
30 p | 49 | 3
-
Bài giảng Kỹ thuật lập trình - Chương 1: Tổng quan về kỹ thuật lập trình (Trường Đại học Bách khoa Hà Nội)
46 p | 15 | 3
-
Bài giảng Kỹ thuật lập trình - Chương 5: Phong cách lập trình (Trường Đại học Bách khoa Hà Nội)
51 p | 18 | 3
-
Bài giảng Kỹ thuật lập trình - Chương 2: Giới thiệu ngôn ngữ lập trình C
69 p | 22 | 3
-
Bài giảng Kỹ thuật lập trình nâng cao: Chương 4 - Trần Minh Thái
11 p | 25 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn