báo cáo bài tập lớn cấu trúc dữ liệu và giải thuật sắp xếp danh sách liên kết đơn

11 0 0
Tài liệu đã được kiểm tra trùng lặp
báo cáo bài tập lớn cấu trúc dữ liệu và giải thuật sắp xếp danh sách liên kết đơn

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

DANH SÁCH THÀNH VIÊNST... Danh sách liên kết đơn...1II... I.Danh sách liên kết đơnDanh sách liên kết đơn Single linked list là một tập hợp các Node được phân bốđộng, được sắp xếp theo cá

Trang 1

Giảng viên hướng dẫn: ThS Giang Thị Thu Huyền

Nhóm sinh viên thực hiện

Hoàng Thị Tú Quyên 24A4041434Phan Thị Hải Yến

Trần Yến Vy

Nguyễn Thị Thảo Trang

Trang 2

DANH SÁCH THÀNH VIÊNST

Trang 3

MỤC LỤC

I Danh sách liên kết đơn 1

II Sắp xếp danh sách liên kết đơn 1

1 Giới thiệu 1

2 Ý tưởng 2

3 Thuật toán 2

4 Cài đặt thuật toán 3

5 Minh họa thuật toán 4

6 Độ phức tạp của thuật toán 5

TÀI LIỆU THAM KHẢO 6

Trang 4

DANH MỤC HÌNH ẢNH

Hình 1: Cấu trúc của 1 node 1

Hình 2: Minh họa 1 danh sách liên kết đơn 1

Hình 3: Minh họa thay đổi Data ở Node 2

Hình 4: Minh họa thuật toán sắp xếp danh sách liên kết đơn với Interchange Sort 4

Trang 5

I.Danh sách liên kết đơn

Danh sách liên kết đơn (Single linked list) là một tập hợp các Node được phân bố

động, được sắp xếp theo cách sao cho mỗi Node chứa một giá trị (Data) và một con trỏ

(Next) Con trỏ sẽ trỏ đến phần tử kế tiếp của danh sách liên kết đó Nếu con trỏ mà trỏ

tới NULL, nghĩa là đó là phần tử cuối cùng của linked list.

Hình 1: Cấu trúc của 1 node

Hình 2: Minh họa 1 danh sách liên kết đơn

1 Giới thiệu

- Một trong những cách để sắp xếp danh sách liên kết đơn đó là hoán vị nội dungcác phần tử trong danh sách (thao tác trên vùng Info)-chỉ so sánh các giá trị Data rồi sắp xếp, các node vẫn giữ nguyên không dịch chuyển.

- Với phương án này có thể chọn 1 trong những thuật toán sắp xếp đã biết để càiđặt lại trên xâu như thực hiện trên mảng.-Ở đây dùng thuật toán đổi chỗ trực tiếp-Interchange sort.

Trang 6

2 Ý tưởng

Xuất phát từ node đầu tiên của danh sách liên kết, tìm tất cả các nghịch thế chứanode này xét với phần data, triệt tiêu chúng bằng cách đổi chỗ 2 phần tử data trong cặpnghịch thế.

Lặp lại xử lý trên với node kế trong danh sách.3 Thuật toán

B1: Khởi tạo nút i, j để duyệt danh sách: Node *i, *j; i = l.pHead; // gán i là địa chỉ nút đầu tiên trong dãy j=i->pNext; // j là địa chỉ của nút tiếp theo

B2: Duyệt từ đầu đến cuối danh sách: Tìm các nghịch thế với data ở i B3: Trong khi j khác NULL thì thực hiện: Xét cặp data ở địa chỉ i và jNếu data ở i > data ở j (i->data.n>j->data.n) // thì đổi chỗ

Trang 7

4 Cài đặt thuật toán

void swapData(int &a,int &b){

int tg=a.n;a.n=b.n;b.n=tg;

void InterchangeSort_Data(List &l){

node *i,*j;

for(Node *i=l.pHead; i!=l.pTail; i=i->pNext)

for(Node *j=i->pNext; j!=NULL; j=j->pNext)if(i->data.n>j->data.n)

swapData(i->data,j->data);}

Trang 8

5 Minh họa thuật toán

VD: 12 2 8 1 6 4

4

Trang 9

Hình 4: Minh họa thuật toán sắp xếp danh sách liên kết đơn với Interchange Sort

6 Độ phức tạp của thuật toán

Trường hợp Số lần so sánh Số lần hoán vị

Trang 10

Xấu nhất n*(n-1)/2 n*(n-1)/2

6

Trang 11

TÀI LIỆU THAM KHẢO

1.Slide bài giảng “Cấu trúc dữ liệu và giải thuật”, khoa Hệ thống thông tin quản lý, Học viện Ngân hàng.

https://viettruong92.blogspot.com/2011/12/ham-sap-xep-tang-dan-trong-danh-sach.html

Ngày đăng: 19/06/2024, 17:03