Bài tập lớn cấu trúc dữ liệu và giải thuật chủ đề viết trình quản lý thu thuế hà nội

Bài tập lớn cấu trúc dữ liệu và giải thuật: Xây dựng trình quản lý thu thuế Hà Nội. Tìm hiểu các thuật toán, cấu trúc dữ liệu hiệu quả cho ứng dụng thực tế.

Trường đại học

Trường Đại Học Lâm Nghiệp

Người đăng

Ẩn danh

Thể loại

Bài tập lớn

2024

46
0
0

Phí lưu trữ

30 Point

Tóm tắt

I. Hướng Dẫn Đồ Án Cấu Trúc Dữ Liệu Và Giải Thuật Quản Lý Thuế

Bài viết này cung cấp một cái nhìn tổng quan và chi tiết về việc thực hiện bài tập lớn cấu trúc dữ liệu và giải thuật với chủ đề cụ thể là xây dựng một trình quản lý thu thuế tại Hà Nội. Mục tiêu chính của đồ án là áp dụng các kiến thức nền tảng về cấu trúc dữ liệu như danh sách liên kết, cây nhị phân tìm kiếm, và các thuật toán sắp xếp, thuật toán tìm kiếm để giải quyết một bài toán thực tế. Đề tài này không chỉ giúp sinh viên củng cố kỹ năng lập trình C++ mà còn mang lại hiểu biết sâu sắc về cách tổ chức và xử lý dữ liệu lớn một cách hiệu quả. Việc xây dựng một hệ thống quản lý thu thuế đòi hỏi phải phân tích kỹ lưỡng các đối tượng, xác định đúng cấu trúc dữ liệu để tối ưu hóa hiệu năng và giảm thiểu độ phức tạp thuật toán. Đồ án môn học này mô phỏng hoạt động của Cục thuế Hà Nội, tập trung vào hai đối tượng chính là người nộp thuế và phiếu thu. Thông qua dự án này, sinh viên sẽ được rèn luyện tư duy logic, khả năng phân tích bài toán và kỹ năng triển khai code C++ quản lý hoàn chỉnh, từ việc thiết kế cấu trúc dữ liệu đến việc cài đặt các chức năng và xử lý tệp. Đây là một cơ hội tuyệt vời để chuyển hóa lý thuyết thành sản phẩm thực tiễn, tạo ra một source code bài tập lớn chất lượng và một bản báo cáo bài tập lớn thuyết phục. Việc hoàn thành tốt dự án sẽ là minh chứng cho năng lực của sinh viên trong lĩnh vực khoa học máy tính.

1.1. Tổng quan về đồ án môn học quản lý thu thuế Hà Nội

Đồ án môn học này tập trung vào việc ứng dụng môn học cấu trúc dữ liệu và giải thuật để xây dựng một phần mềm quản lý thuế. Bài toán đặt ra yêu cầu sinh viên phải thiết kế một hệ thống có khả năng lưu trữ, truy xuất, và xử lý thông tin liên quan đến các đối tượng nộp thuế và các giao dịch thu thuế. Các chức năng cơ bản bao gồm nhập, xuất, tìm kiếm, sắp xếp, thêm, xóa và sửa đổi dữ liệu. Hệ thống phải đảm bảo tính chính xác và hiệu quả, đặc biệt khi làm việc với lượng dữ liệu lớn. Ngôn ngữ được lựa chọn để triển khai là lập trình C++, tận dụng sức mạnh của lập trình hướng đối tượng để mô hình hóa các thực thể trong bài toán. Mục tiêu cuối cùng là tạo ra một chương trình hoàn chỉnh, có khả năng quản lý danh sách hiệu quả, đi kèm với source code bài tập lớn rõ ràng và tài liệu báo cáo bài tập lớn chi tiết.

1.2. Xác định đối tượng quản lý chính người nộp thuế và phiếu thu

Trong khuôn khổ bài toán, hai đối tượng quản lý cốt lõi được xác định. Đối tượng thứ nhất là người nộp thuế, bao gồm các thông tin định danh như mã số thuế, tên công ty, địa chỉ, quy mô, và người đại diện. Việc quản lý hiệu quả danh sách này là nền tảng cho mọi hoạt động của hệ thống. Đối tượng thứ hai là phiếu thu, chứa các thông tin về giao dịch như mã phiếu, ngày lập, số tiền cần nộp, số tiền giảm trừ, và thông tin liên kết đến người nộp thuế tương ứng. Cấu trúc dữ liệu cho mỗi đối tượng cần được định nghĩa rõ ràng, ví dụ, sử dụng struct hoặc class trong C++. Việc phân tích và định nghĩa chính xác các thuộc tính của hai đối tượng này là bước đầu tiên và quan trọng nhất, quyết định đến sự thành công của toàn bộ dự án quản lý thu thuế.

II. Phân Tích Thách Thức Trong Việc Quản Lý Thu Thuế Thủ Công

Quá trình quản lý thu thuế theo phương pháp thủ công hoặc bán tự động đối mặt với nhiều thách thức và rủi ro. Việc lưu trữ hồ sơ trên giấy tờ hoặc các file Excel đơn giản dẫn đến khó khăn trong việc tra cứu và tổng hợp dữ liệu. Khi số lượng người nộp thuế tăng lên, việc tìm kiếm thông tin theo mã số thuế hay các tiêu chí khác trở nên tốn thời gian và dễ xảy ra sai sót. Thêm vào đó, việc cập nhật, xóa bỏ hay chỉnh sửa thông tin của một đối tượng có thể ảnh hưởng đến tính nhất quán của toàn bộ hệ thống dữ liệu. Một thách thức lớn khác là việc tính toán và đối soát các khoản thuế thu nhập cá nhân hoặc thuế doanh nghiệp, nếu thực hiện thủ công, rất dễ nhầm lẫn, gây thất thoát cho nhà nước hoặc gây phiền hà cho người dân. Hơn nữa, việc bảo mật thông tin nhạy cảm của người nộp thuế cũng là một vấn đề đáng lo ngại với các phương pháp lưu trữ truyền thống. Sự thiếu hiệu quả này không chỉ làm giảm năng suất làm việc của cán bộ thuế mà còn làm tăng nguy cơ xảy ra sai sót nghiệp vụ. Do đó, việc xây dựng một hệ thống quản lý tự động bằng lập trình C++, áp dụng cấu trúc dữ liệu và giải thuật tiên tiến là một giải pháp cấp thiết để giải quyết triệt để những vấn đề này.

2.1. Khó khăn khi lưu trữ và tra cứu thông tin người nộp thuế

Việc lưu trữ thông tin của hàng nghìn, thậm chí hàng triệu người nộp thuế trên các tệp riêng lẻ hoặc sổ sách gây ra tình trạng phân mảnh dữ liệu. Khi cần tìm kiếm một hồ sơ cụ thể dựa trên mã số thuế hoặc tên công ty, nhân viên phải duyệt qua một khối lượng lớn tài liệu, làm lãng phí thời gian và công sức. Dữ liệu không được chuẩn hóa, dẫn đến tình trạng trùng lặp hoặc thiếu nhất quán. Ví dụ, cùng một công ty có thể được ghi nhận với nhiều địa chỉ khác nhau ở các thời điểm khác nhau. Việc thiếu một cơ sở dữ liệu tập trung khiến cho việc thống kê, báo cáo theo các tiêu chí phức tạp (ví dụ: các công ty cùng một quận, các doanh nghiệp có quy mô tương tự) trở nên gần như bất khả thi nếu không có các công cụ hỗ trợ.

2.2. Rủi ro sai sót khi xử lý phiếu thu và quản lý danh sách

Quy trình xử lý phiếu thu thủ công tiềm ẩn nhiều rủi ro. Việc nhập liệu sai, tính toán nhầm số tiền phải nộp hoặc số tiền giảm trừ có thể xảy ra thường xuyên. Các sai sót này không chỉ ảnh hưởng đến tài chính mà còn làm giảm uy tín của cơ quan thuế. Việc quản lý danh sách phiếu thu cũng gặp nhiều vấn đề, đặc biệt là trong việc liên kết một phiếu thu với đúng người nộp thuế. Nếu không có một hệ thống tự động kiểm tra và xác thực, việc một phiếu thu bị gán nhầm mã số thuế là hoàn toàn có thể xảy ra. Hơn nữa, việc sắp xếp các phiếu thu theo ngày tháng hoặc theo số tiền để phục vụ công tác kiểm toán, báo cáo cũng là một công việc nặng nhọc và dễ sai sót.

III. Phương Pháp Chọn Cấu Trúc Dữ Liệu Tối Ưu Cho Bài Toán Thu Thuế

Lựa chọn cấu trúc dữ liệu và giải thuật phù hợp là yếu tố quyết định đến hiệu năng và khả năng mở rộng của chương trình quản lý thu thuế. Đối với bài toán này, danh sách liên kết nổi lên như một lựa chọn ưu việt nhờ khả năng cấp phát động, cho phép thêm hoặc xóa các phần tử (người nộp thuế, phiếu thu) một cách linh hoạt mà không cần xác định trước số lượng tối đa. Cụ thể, tài liệu gốc đề xuất một phương pháp tiếp cận thông minh: sử dụng hai loại danh sách liên kết khác nhau cho hai đối tượng quản lý chính. Việc phân tích kỹ lưỡng các thao tác nghiệp vụ sẽ giúp quyết định nên dùng danh sách liên kết đơn, danh sách liên kết đôi, hay thậm chí là các cấu trúc dữ liệu cao cấp hơn như cây nhị phân tìm kiếm hoặc bảng băm để tối ưu hóa cho các hoạt động tìm kiếm. Việc sử dụng đúng cấu trúc dữ liệu không chỉ giúp chương trình chạy nhanh hơn mà còn làm cho code C++ quản lý trở nên sạch sẽ, dễ hiểu và dễ bảo trì hơn. Đánh giá độ phức tạp thuật toán cho từng thao tác trên cấu trúc dữ liệu đã chọn là một bước không thể thiếu để đảm bảo hệ thống hoạt động ổn định khi quy mô dữ liệu tăng lên.

3.1. Ứng dụng danh sách liên kết đơn quản lý người nộp thuế

Đối với việc quản lý danh sách người nộp thuế, danh sách liên kết đơn là một lựa chọn hợp lý. Cấu trúc này cho phép dễ dàng thêm một người nộp thuế mới vào cuối danh sách hoặc xóa một người nộp thuế dựa trên mã số thuế. Mỗi nút trong danh sách sẽ chứa toàn bộ thông tin của một người nộp thuế. Các thao tác như duyệt toàn bộ danh sách để in thông tin hoặc tìm kiếm một người nộp thuế cụ thể có thể được thực hiện một cách tuần tự. Mặc dù việc truy cập một phần tử ở giữa danh sách có thể chậm hơn so với mảng, nhưng tính linh hoạt trong việc quản lý bộ nhớ và sự đơn giản trong cài đặt làm cho danh sách liên kết đơn trở thành một giải pháp hiệu quả cho yêu cầu của đồ án môn học này.

3.2. Sử dụng danh sách liên kết đôi cho quản lý phiếu thu hiệu quả

Trong khi đó, việc quản lý phiếu thu lại có những yêu cầu phức tạp hơn, do đó danh sách liên kết đôi được đề xuất. Ưu điểm của danh sách liên kết đôi là mỗi nút không chỉ có con trỏ trỏ đến nút kế tiếp mà còn có con trỏ trỏ đến nút đứng trước nó. Điều này giúp cho các thao tác duyệt danh sách theo cả hai chiều (từ đầu đến cuối và từ cuối về đầu) trở nên dễ dàng. Đặc biệt, các thao tác xóa một phần tử ở cuối danh sách hoặc chèn một phần tử vào một vị trí bất kỳ trở nên hiệu quả hơn so với danh sách liên kết đơn. Điều này rất hữu ích trong các nghiệp vụ quản lý thu thuế, nơi các phiếu thu thường được sắp xếp hoặc xử lý dựa trên các giao dịch gần nhất.

IV. Bí Quyết Cài Đặt Thuật Toán Tìm Kiếm Và Sắp Xếp Hiệu Quả

Sau khi đã có cấu trúc dữ liệu, việc cài đặt các thuật toán để thao tác trên dữ liệu đó là bước tiếp theo. Thuật toán tìm kiếmthuật toán sắp xếp là hai thành phần không thể thiếu trong hệ thống quản lý thu thuế. Đối với chức năng tìm kiếm, ví dụ như tìm người nộp thuế theo mã số thuế hoặc tìm phiếu thu theo mã phiếu, thuật toán tìm kiếm tuyến tính (Linear Search) là phương pháp đơn giản và hiệu quả trên danh sách liên kết. Thuật toán này duyệt qua từng phần tử của danh sách cho đến khi tìm thấy đối tượng mong muốn hoặc đi hết danh sách. Đối với chức năng sắp xếp, chẳng hạn như sắp xếp danh sách người nộp thuế theo diện tích hoặc sắp xếp phiếu thu theo số tiền phải đóng tăng dần, các thuật toán như Interchange Sort (Đổi chỗ trực tiếp) được áp dụng. Thuật toán này sử dụng hai vòng lặp lồng nhau để so sánh và hoán đổi vị trí các cặp phần tử cho đến khi toàn bộ danh sách được sắp xếp. Mặc dù có độ phức tạp thuật toán là O(n^2), nó vẫn đủ hiệu quả cho quy mô dữ liệu của một bài tập lớn cấu trúc dữ liệu và giải thuật.

4.1. Triển khai thuật toán tìm kiếm tuyến tính theo mã số thuế

Để tìm kiếm một người nộp thuế theo mã số thuế, một con trỏ được khởi tạo tại đầu danh sách. Sau đó, một vòng lặp sẽ được thực hiện để duyệt qua từng nút. Trong mỗi lần lặp, mã số thuế của nút hiện tại sẽ được so sánh với mã số thuế cần tìm. Nếu trùng khớp, con trỏ sẽ trỏ đến nút đó và quá trình tìm kiếm kết thúc thành công. Nếu vòng lặp kết thúc mà không tìm thấy sự trùng khớp nào, điều đó có nghĩa là người nộp thuế không tồn tại trong danh sách. Đây là một thuật toán tìm kiếm cơ bản nhưng rất quan trọng trong đồ án môn học, giúp giải quyết yêu cầu tra cứu thông tin nhanh chóng.

4.2. Cải tiến hiệu suất với thuật toán sắp xếp Interchange Sort

Để sắp xếp danh sách, ví dụ như sắp xếp các phiếu thu theo số tiền phải đóng, thuật toán sắp xếp Interchange Sort được sử dụng. Thuật toán này hoạt động bằng cách dùng một con trỏ p duyệt từ đầu đến phần tử kế cuối của danh sách. Với mỗi vị trí của p, một con trỏ q sẽ duyệt từ vị trí p->next đến cuối danh sách. Trong quá trình duyệt của q, giá trị của phần tử pq được so sánh. Nếu chúng không đúng thứ tự mong muốn (ví dụ, p->info > q->info khi sắp xếp tăng dần), giá trị của hai phần tử này sẽ được hoán đổi cho nhau. Quá trình này lặp lại cho đến khi p duyệt hết danh sách, đảm bảo mọi phần tử đều ở đúng vị trí.

V. Hướng Dẫn Lập Trình C Quản Lý Thu Thuế Chi Tiết Từ A Z

Triển khai chương trình quản lý thu thuế bằng ngôn ngữ lập trình C++ đòi hỏi một cách tiếp cận có cấu trúc và bài bản. Nền tảng của việc triển khai là áp dụng triệt để các nguyên tắc của lập trình hướng đối tượng (OOP). Các thực thể như người nộp thuế và phiếu thu sẽ được mô hình hóa thành các lớp (class) hoặc cấu trúc (struct), bao gồm các thuộc tính (dữ liệu) và phương thức (hành vi) tương ứng. Cách tiếp cận này giúp mã nguồn trở nên dễ quản lý, tái sử dụng và mở rộng. Một phần quan trọng khác của việc triển khai là xử lý tệp. Dữ liệu cần được lưu trữ bền vững ngay cả khi chương trình tắt. Kỹ thuật File handling C++ cho phép chương trình đọc dữ liệu từ tệp khi khởi động và ghi dữ liệu ra tệp trước khi kết thúc. Điều này đảm bảo tính toàn vẹn và liên tục của dữ liệu. Toàn bộ source code bài tập lớn cần được tổ chức thành các file .h và .cpp một cách khoa học để tăng tính module hóa. Cuối cùng, một bản báo cáo bài tập lớn chi tiết, giải thích các lựa chọn thiết kế và các thuật toán đã sử dụng, là một phần không thể thiếu để hoàn thiện dự án.

5.1. Xây dựng lớp đối tượng theo nguyên tắc lập trình hướng đối tượng

Việc áp dụng lập trình hướng đối tượng bắt đầu bằng việc định nghĩa các lớp NguoiNopThuePhieuThu. Mỗi lớp sẽ đóng gói dữ liệu (ví dụ: maSoThue, tenCongTy) và các hàm thành viên để thao tác với dữ liệu đó (ví dụ: nhapThongTin(), xuatThongTin()). Tính đóng gói giúp che giấu chi tiết cài đặt và chỉ cung cấp một giao diện công khai để tương tác, làm cho code C++ quản lý trở nên an toàn và dễ bảo trì hơn. Các lớp quản lý danh sách (ví dụ: QuanLyDSNguoiNopThue) cũng sẽ được xây dựng để chứa các phương thức thêm, xóa, sửa, tìm kiếm, sắp xếp, thể hiện rõ ràng sự phân tách trách nhiệm trong chương trình.

5.2. Kỹ thuật xử lý file trong C File Handling C để lưu trữ

Để lưu trữ dữ liệu lâu dài, chương trình sẽ sử dụng thư viện <fstream> trong C++. Hai chức năng chính là ghi danh sách ra file và đọc danh sách từ file. Khi ghi file, chương trình sẽ duyệt qua danh sách liên kết, lấy thông tin của từng nút và ghi xuống file văn bản theo một định dạng có cấu trúc. Khi đọc file, chương trình sẽ đọc từng dòng hoặc từng khối dữ liệu từ file, tái tạo lại các đối tượng và thêm chúng vào danh sách liên kết. Kỹ thuật File handling C++ này là cốt lõi để đảm bảo dữ liệu của hệ thống quản lý thu thuế không bị mất sau mỗi lần chạy.

VI. Tổng Kết Đồ Án Và Hướng Phát Triển Hệ Thống Trong Tương Lai

Dự án bài tập lớn cấu trúc dữ liệu và giải thuật chủ đề quản lý thu thuế đã hoàn thành các mục tiêu đề ra. Chương trình có khả năng quản lý hiệu quả thông tin người nộp thuế và phiếu thu bằng cách sử dụng danh sách liên kết đơndanh sách liên kết đôi. Các chức năng cơ bản như nhập, xuất, tìm kiếm, sắp xếp, thêm, xóa đã được cài đặt thành công bằng lập trình C++, áp dụng các thuật toán tìm kiếmthuật toán sắp xếp phù hợp. Hệ thống có khả năng lưu và đọc dữ liệu từ file, đảm bảo tính bền vững. Tuy nhiên, vẫn còn nhiều hướng để phát triển và nâng cấp hệ thống trong tương lai. Việc cải tiến cấu trúc dữ liệu và thuật toán là một trong những ưu tiên hàng đầu. Hướng phát triển có thể bao gồm việc chuyển đổi từ danh sách liên kết sang các cấu trúc dữ liệu có hiệu suất tìm kiếm cao hơn. Đồng thời, việc xây dựng một giao diện người dùng đồ họa (GUI) thân thiện hơn thay vì giao diện console cũng sẽ làm tăng tính ứng dụng thực tiễn của sản phẩm. Những cải tiến này không chỉ giúp tối ưu hóa hiệu năng mà còn mở ra khả năng tích hợp với các hệ thống lớn hơn của Cục thuế Hà Nội.

6.1. Đánh giá kết quả đạt được của chương trình quản lý thu thuế

Chương trình đã giải quyết thành công bài toán quản lý cơ bản. Hệ thống đáp ứng các yêu cầu về nghiệp vụ như quản lý hai danh sách đối tượng, thực hiện các thao tác CRUD (Create, Read, Update, Delete), tìm kiếm và sắp xếp. Source code bài tập lớn được tổ chức rõ ràng, tuân thủ các nguyên tắc lập trình hướng đối tượng. Việc sử dụng danh sách liên kết đã chứng tỏ sự linh hoạt trong việc quản lý bộ nhớ. Về mặt học thuật, đồ án môn học này là một bài thực hành xuất sắc, giúp áp dụng lý thuyết cấu trúc dữ liệu và giải thuật vào một bối cảnh gần với thực tế.

6.2. Tiềm năng nâng cấp Áp dụng cây nhị phân tìm kiếm bảng băm

Để cải thiện độ phức tạp thuật toán của chức năng tìm kiếm từ O(n) xuống O(log n) hoặc O(1), hệ thống có thể được nâng cấp bằng cách sử dụng các cấu trúc dữ liệu cao cấp hơn. Cây nhị phân tìm kiếm (Binary Search Tree) có thể được áp dụng để quản lý người nộp thuế theo mã số thuế. Mỗi thao tác tìm kiếm, thêm, xóa trên cây nhị phân tìm kiếm cân bằng sẽ có hiệu suất cao hơn nhiều so với danh sách liên kết. Ngoài ra, bảng băm (Hash Table) là một lựa chọn tuyệt vời khác cho việc tra cứu tức thời, cho phép truy xuất thông tin gần như ngay lập tức. Việc áp dụng các cấu trúc này sẽ đưa dự án lên một tầm cao mới về mặt hiệu năng.

20/09/2025

Trích đoạn nội dung tài liệu

TRƯỜNG ĐẠI HỌC LÂM NGHIỆP BÀI TẬP LỚN MÔN: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT CHỦ ĐỀ: VIẾT TRÌNH QUẢN LÝ THU THUẾ HÀ NỘI Ngành: Hệ thống thông tin Lớp: K64-HTTT Họ và tên: Đỗ Tuấn Anh Mã Sinh Viên: 1951071186 Hà Nội - 2024 MỤC LỤC I. Xác định bài toán. Đối tượng được quản lý của bài toán gồm:. Xác định thuật toán.

Danh sách liên kết đơn. Nhập danh sách:. In danh sách:. Danh sách liên kết đôi:.

In danh sách:. Xóa sản phẩm ở cuối danh sách. Nhập danh sách trên file. In danh sách.

Xóa phần tử đầu. Đếm phần tử trong ngăn xếp. Đếm phần tử trong ngăn xếp. Nhập danh sách.

Cài đặt chương trình. Danh sách liên kết đơn (Quản lý người nộp thuế). Danh sách liên kết đôi (Quản lý phiếu thu). Xác định bài toán: Bài toán Quản lí thuế nhằm hỗ trợ cho nhân viên nắm rõ thông tin khách hàng, mặt hàng, hóa đơn hàng nhằm giúp cho việc quản lý các hoạt động của cửa hàng thuận tiện và nhanh chóng hơn.

Đồng thời bài toán quản lí bán hàng còn giúp nhân viên của cửa hàng bán sách sắp xếp thống kê khách hàng. Đối tượng được quản lý của bài toán gồm: Người đóng thuế, phiếu thu Trong đó: - Người đóng thuế: mã người đóng thuế, mã thuế, tên công ty, địa chỉ, diện tích, quy mô, người đứng đầu - Phiếu thu: mã phiếu thu, ngày lập, tháng, năm, số tiền cần nộp, số tiền giảm trừ, mã người nộp thuế, họ tên người đóng, số tiền cần đóng = tổng tiền – số tiền giảm trừ Quản lý thu thuế Hà Nội Người đóng thuế Phiếu thu 1.Nhập thông tin: mã người đóng thuế, 1.Nhập thông tin: mã phiếu thu, ngày lập, mã thuế, tên công ty, địa chỉ, diện tích, tháng, năm, số tiền cần nộp, số tiền giảm quy mô, người đứng đầu trừ, mã người nộp thuế, tổng tiền=số tiền 2.In danh sách người đóng thuế cần nộp - tiền giảm trừ, người lập 3.Lưu DS người đóng thuế vào file 2.In DS phiếu thu 4.Đọc DS người đóng thuế từ file 3.Lưu DS phiếu thu vào file 5.Tìm kiếm người đóng thuế theo mã 4.Đọc DS phiếu thu từ file 6.Sắp xếp theo diện tích 5.Tìm kiếm phiếu theo mã phiếu thu 7.Xoá người đóng thuế theo mã 6.Sắp xếp phiếu theo tiền phải đóng tăng 8.Thêm người đóng thuế dần 9.Cho danh sách công ty có địa chỉ tại Hà 7.Xoá phiếu Nội 8.Sửa phiếu III. Xác định thuật toán 1. Danh sách liên kết đơn Để thực hiện các chức năng trên ta cần:  Khai báo cấu trúc dữ liệu  Khai báo cấu trúc một nút trong danh sách liên kết đơn  Khai báo danh sách liên kết đơn  Khởi tạo danh sách rỗng  Tạo nút mới với thành phần dữ liệu x 1.

Nhập danh sách: * Mô tả thuật toán: o Nhập n danh sách và thông o Cho i chạy từ i=1->n, nếu i<= n thì sau mỗi lần duyệt them 1 phần tử vào sau danh sách o Nếu i>n thì kết thúc thuật toán. * Sơ đồ thuật toán: Begin Nhập n phân tử S Đ Note* p;i=0 i>n i<n Nhập phân tử thứ i End i=i + 1 1. In danh sách: *Mô tả thuật toán: Duyệt từ đầu đến cuối danh sách. Với mỗi lần duyệt, xuất ra màn hình thông tin của khách hàng *Sơ đồ thuật toán: Begin p=Q.Head p=p->next p!=NULL In thông tin thứ i End 1.

Tìm kiếm hóa đơn có mã x *Mô tả thuật toán: •Bước 1: p = DQ.Head; •Bước 2: Lặp trong khi (p!=NULL) và (p->infor.ma != x) thì p = p -> Next; •Bước 3: oNếu p != NULL thì p trỏ đến phần tử cần tìm oNgược lại thì không tìm thấy phần tử cần tìm *Sơ đồ thuật toán : Bắt đầu p = Q.Head p!=Null q = p -> next sai q!= đúng p->infor.tt Hoandoi (p->infor.tt) q = q->next p = p->next Kết thúc 1. Sắp xếp: *Mô tả thuật toán: + Mô tả thuật toán: Sử dụng 2 con trỏ p, q dể duyệt và so sánh với nhau  p = Q.Head;  Lặp trong khi (p != NULL)  q = p -> next;  Lặp trong khi (q != NULL)  So sánh giá trị của phần tử p và q nếu không đúng trật tự thì hoán đổi giá trị của p và q cho nhau Vd: Sắp xếp tăng dần, nếu p -> infor.tt); q = q -> next; op = p -> next; *Sơ đồ thuật toán: Sai p!=NULL Đúng q = p -> next Sai q! =NULL Đúng Sai p->infor.tt Đúng Hoandoi (p->infor.tt) q = q->next p = p->next Kết thúc 2. Danh sách liên kết đôi: 2.Xử lý nhập: + Mô tả thuật toán  Khởi tạo danh sách rỗng  Tạo nút mới p với thành phần dữ liệu x  Nhập n sản phẩm  Duyệt từ i=1 đến i<= n. Với mỗi lần duyệt, lưu 1 phần tử vào p.

 Ngược lại i>n thì kết thúc. + Sơ đồ thuật toán: Bắt đầu Nhập i=1 i=i+1 Đúng Sai i<=n Thêm node Nhập dữ liệu Lưu thông tin cho nút p = getnode(x) Kết thúc 2. In danh sách: + Mô tả thuật toán: Duyệt từ đầu đến cuối danh sách. Với mỗi lần duyệt, xuất ra màn hình thông tin của mỗi sản phẩm.

+ Sơ đồ thuật toán: Bắt đầu p= DQ.Head p = p -> next Đúng p!=NULL In thông tin nút thứ 1 Sai Kết thúc 2. Xóa sản phẩm ở cuối danh sách + Mô tả thuật toán:  Kiểm tra danh sách không rỗng  Lưu phần tử cuối tạm thời vào p  Chuyển phần tử cuối tới phần tử bên trái  Xóa p  Kiểm tra lại danh sách +Sơ đồ: BRt đầu ĐTng DQ.Head==NULL Sai DQ.Tail -> prev DQ.Tail -> next = NULL Kết thTc 3. Nhập danh sách trên file -Khởi tạo danh sách rỗng -Nhập số lượng (n) sách -Duyệt từng i=1 cho đến khi i<= n. Với mỗi 1 phần tử ta thêm 1 thông tin sách vào sau danh sách -Nếu i>n, kết thúc *Sơ đồ: Bắt đầu Nhập i=1 i=i+1 Đúng Sai i<=n Thêm node Lưu thông tin cho nút Nhập dữ liệu p = getnode(x) Kết thúc 3.

In danh sách Duyệt từ phần tử đầu đến cuối danh sách. Với mỗi phần tử ta xuất ra màn hình *Sơ đồ: Bắt đầu p = DQ.Head p = p -> next p != Đúng In thông tin nút NULL thứ i 3. Xóa phần tử đầu -Kiểm tra danh sách không rỗng Kết thúc -Lưu phần tử đầu vào p -Chuyển phần tử đầu tới phần tử bên cạnh -Xóa phần tử đã được lưu trong p -> Xóa p -Kiểm tra: nếu danh sách chỉ có 1 phần tử, khi xóa đi phần tử cuối không còn. Begin Tạo node p Đúng Không thể p!= NULL xóa Sai p=new mode p=Q.head->next free(p) End 3.

Đếm phần tử trong ngăn xếp -Bước 1: khởi tạo biến đếm = 0 -Bước 2: Kiểm tra danh sách còn phần tử và duyệt từ phần tử đầu đến phần tử cuối của danh sách Nếu p -> Info == k thì tăng biến đếm lên 1 In ra màn hình giá trị biến đếm VD: Đếm số sách có giá nhỏ hơn x Begin + Sơ đồ thuật toán: Tạo node P=Q.Head d=0 Đúng P!=NULL P>info.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ