Chào các bạn! Vì nhiều lý do từ nay Truyen2U chính thức đổi tên là Truyen247.Pro. Mong các bạn tiếp tục ủng hộ truy cập tên miền mới này nhé! Mãi yêu... ♥

bổ xung và loại bỏ dữ liệu trong móc nối liên kết

4) Trình bày giải thuật bổ sung 1 nút mới có chứa dữ liệu X vào trước nút trỏ bởi Q trong danh sách móc nối 2 chiều với: Pdau trỏ vào phần tử đầu, Pcuoi trỏ vào phần tử cuối, mỗi nút có các trường: Data, P_Trai, P_Phai.

Bài làm:

Procedure Insert (Pdau, Pcuoi, Q, X)

New(p); //Tạo nút mới

Data(p):= X;

If Pcuoi := Null then //Danh sách rỗng

P_trai(p) := P_Phai(p) := Null;

Pdau := Pcuoi := p;

Return

End ;

If Q = Pdau then begin //Q trỏ tới nút cực trái

P_Trai(p) := null;

P_Phai(p) := Q;

P_Trai(p) := p;

Pdau :=p;

Return

End ;

P_Trai(p) := P_Trai(Q); //Bổ sung vào giữa

P_Phai(p) := Q;

P_Trai(Q) := p;

P_Phai(P_Trai(p)) :=p;

Return.

5) Trình bày giải thuật loại bỏ nút trỏ bởi M trong danh sách móc nối 2 chiều với : Pdau trỏ vào phần tử đầu, Pcuoi trỏ vào phần tử cuối, mỗi nút có các trường: Data, P_Trai, P_Phai.

Bài làm:

Procedure Delete(Pdau, Pcuoi, M)

If Pcuoi = null then begin //Trường hợp danh sách rỗng

Write (“Danh sach rong”);

Return

End;

Case //Loại bỏ

Pdau := Pcuoi; //Danh sách chỉ có 1 nút và M trỏ tới nút đó

Pdau := Pcuoi := null

M: = Pdau //Phần tử đầu bị loại

Pdau := P_Phai(Pdau);

P_Trai(Pdau) := null;

M := Pcuoi //Phần tử cuối bị loại

Pcuoi := P_Trai(Pcuoi) ;

P_Phai(Pcuoi) := null ;

Else

P_Phai(P_Trai(M)) := P_Phai(M) ;

P_Trai(P_Phai(M)) := P_Trai(M) ;

End case;

Dispose(M) ;

Return.

Bạn đang đọc truyện trên: Truyen247.Pro

Tags: