Bài giảng Cấu trúc dữ liệu và giải thuật 1: Chương 4

83 10 0
Bài giảng Cấu trúc dữ liệu và giải thuật 1: Chương 4

Đ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

Bài giảng Cấu trúc dữ liệu và giải thuật 1: Chương 4 trình bày các nội dung chính sau: Danh sách liên kết đơn, Tổ chức của danh sách liên kết đơn, cấu trúc dữ liệu của danh sách liên kết đơn, cài đặt hàm main, các cấu trúc đặc biệt của danh sách đơn, cài đặt Stack,... Mời các bạn cùng tham khảo để nắm nội dung chi tiết.

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải NỘIMaster DUNGTitle Style Click To Edit DANH SÁCH LIÊN KẾT ĐƠN (LIST) Tổ Chức DSLKMaster Đơn ClickCủa To Edit CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải x0 x1 Title Style x2 x3  Mỗi phần tử liên kết với phần tử đứng liền sau danh sách  Mỗi phần tử danh sách liên kết đơn cấu trúc có hai thành phần  Thành phần liệu: Lưu trữ thông tin thân phần tử  Thành phần liên kết: Lưu địa phần tử đứng sau danh sách NULL phần tử cuối danh sách CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải DSLKTitle đơnStyle ClickCTDL To Editcủa Master  Cấu trúc liệu nút List đơn typedef struct tagNode { Data Info; // Lưu thông tin thân struct tagNode *pNext; //Lưu địa Node đứng sau }Node; pNext  Cấu trúc liệu DSLK đơn Info typedef struct tagList { Node *pHead;//Lưu địa Node List Node *pTail; //Lưu địa Node cuối List }LIST; // kiểu danh sách liên kết đơn Ví dụ tổ chức DSLKMaster đơn nhớ Click To Edit Title Style pHead pTail 4f 3f CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải 4f 5f 5f NULL Trong ví dụ thành phần liệu số nguyên CácClick thao tác bảnMaster DSLK đơn To Edit Title Style  Tạo danh sách liên kết đơn rỗng  Tạo nút có trường Infor x  Tìm phần tử có Info x CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải  Thêm phần tử có khóa x vào danh sách  Hủy phần tử danh sách  Duyệt danh sách  Sắp xếp danh sách liên kết đơn Khởi tạo danh sáchMaster liên kết Click To Edit Title Style  Địa nút đầu tiên, địa nút cuối khơng có void CreateList(List &l) CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải { l.pHead=NULL; l.pTail=NULL; } TạoClick phần Master TotửEdit Title Style  Hàm trả địa phần tử tạo Node* CreateNode(Data x) // học int { Node *p; CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải p = new Node;//Cấp phát vùng nhớ cho phần tử if ( p==NULL) exit(1); p ->Info = x; //gán dữa liệu cho nút p->pNext = NULL; return p; } Thêm phần tử vàoMaster DSLK Click To Edit Title Style  Nguyên tắc thêm: Khi thêm phần tử vào List có làm cho pHead, pTail thay đổi?  Các vị trí cần thêm phần tử vào List: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải  Thêm vào đầu List đơn  Thêm vào cuối List  Thêm vào sau phần tử q list Thuật toánTo thêm phần tử vào đầuStyle DSLK Click Edit Master Title  Thêm nút p vào đầu danh sách liên kết đơn Bắt đầu: Nếu List rỗng CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải + pHead = p; + pTail = pHead; Ngược lại + p->pNext = pHead; + pHead = p CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải Hàm thêmTo phần vào đầuTitle List Click Edittử Master void AddHead(LIST &l, Node* p) { if (l.pHead==NULL) { l.pHead = p; l.pTail = l.pHead; } else { p->pNext = l.pHead; l.pHead = p; } } Style CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải CàiClick Stack To danh sách liên kết Style Edit Master Title • Kiểm tra tính rỗng Stack int IsEmpty(List &s) { if(s.pHead==NULL)//Stack rong return 1; else return 0; } CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải Thêm phần tử vàoMaster Stack Click To Edit void Push(List &s, Node *Tam) { if(s.pHead==NULL) { s.pHead=Tam; s.pTail=Tam; } else { Tam->pNext=s.pHead; s.pHead=Tam; } } Title Style CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải LấyClick phầnTo tửEdit từ Stack Master int Pop(List &s,int &trave) { Node *p; if(IsEmpty(s)!=1) { p=s.pHead; trave=p->Info; s.pHead=s.pHead->Next; if(s.pHead==NULL) s.pTail=NULL; delete p; return 1; } return 0; } Title Style CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải Stack (hàm Click Tomain) Edit Master Title Style void main() { Stack s; int tv,i; Node *p; CreateStack(s); for(i=2;iq.Rear)//truong hop co mot phan tu { q.Front=-1; q.Rear=-1; } return 1; } else //queue { printf("Queue rong"); return 0; } } CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải Thêm phần tử vàoMaster Queue Click To Edit Title Style int EnQueue(Queue &q,int x) { int i; int f,r; if(q.Rear-q.Front+1==max)//queue bi day khong the them vao duoc nua return 0; else { if(q.Front==-1) { q.Front=0; q.Rear=-1; } CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải Thêm phần tử vào Queue (tt)Style Click To Edit Master Title if(q.Rear==max-1)//Queue đầy ảo { f=q.Front; r=q.Rear; for(i=f;iInfo; Q.pHead=Q.pHead->Next; if(Q.pHead==NULL) Q.pTail=NULL; delete p; return 1; } return 0; } Title Style CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải Queue (hàm Click To main()) Edit Master Title Style void main() { Queue q; int tv,i; Node *p; CreateQueue(q); for(i=2;ipNext = pHead; + pHead = p CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải Hàm... vào sau nút q list đơn Bắt đầu: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải Nếu (q!=NULL) B1: p->pNext = q->pNext B2: + q->pNext = p + q = pTail pTail=p CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT... vào cuối list đơn Bắt đầu: Nếu List rỗng CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải + pHead = p; + pTail = pHead; Ngược lại + pTail->pNext=p; + pTail=p CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Ngày đăng: 11/05/2021, 01:26

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan