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 1 - Trần Quang
39 p | 23 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 9 - Trần Quang
33 p | 12 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 8 - Trần Quang
34 p | 22 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 7 - Trần Quang
28 p | 27 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 6 - Trần Quang
37 p | 26 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 4 - Trần Quang
32 p | 21 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 3 - Trần Quang
52 p | 24 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 2 - Trần Quang
25 p | 27 | 2
-
Bài giảng Kỹ thuật lập trình: Tập tin - ThS. Đặng Bình Phương
48 p | 14 | 0
-
Bài giảng Kỹ thuật lập trình: Kỹ thuật lập trình đệ quy - ThS. Đặng Bình Phương
44 p | 15 | 0
-
Bài giảng Kỹ thuật lập trình: Dữ liệu kiểu cấu trúc - ThS. Đặng Bình Phương
33 p | 15 | 0
-
Bài giảng Kỹ thuật lập trình: Chuỗi ký tự - ThS. Đặng Bình Phương
20 p | 16 | 0
-
Bài giảng Kỹ thuật lập trình: Danh sách liên kết - ThS. Đặng Bình Phương
20 p | 16 | 0
-
Bài giảng Kỹ thuật lập trình: Chuyển đổi kiểu dữ liệu và cấp phát bộ nhớ động - ThS. Đặng Bình Phương
28 p | 18 | 0
-
Bài giảng Kỹ thuật lập trình: Dữ liệu kiểu con trỏ (Nâng cao) - ThS. Đặng Bình Phương
48 p | 16 | 0
-
Bài giảng Kỹ thuật lập trình: Dữ liệu kiểu con trỏ (Cơ bản) - ThS. Đặng Bình Phương
40 p | 6 | 0
-
Bài giảng Kỹ thuật lập trình: Giới thiệu môn học - ThS. Đặng Bình Phương
7 p | 14 | 0
-
Bài giảng Kỹ thuật lập trình: Các kỹ thuật thao tác trên bit - ThS. Đặng Bình Phương
29 p | 18 | 0
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