P L trỏ tới nút bên trái data chứa dữ liệu p r trỏ tới nút bên phải double in(Pdau, Pcuoi, Q, X) //X: dữ liệu cần thêm



tải về 35.79 Kb.
trang1/11
Chuyển đổi dữ liệu28.05.2022
Kích35.79 Kb.
#52147
  1   2   3   4   5   6   7   8   9   10   11
code

Mục lục



1. Trình bày (bằng ngôn ngữ tựa C) giải thuật bổ sung một 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 hai 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ấu trúc như sau:


P_L Trỏ tới nút bên trái
DATA Chứa dữ liệu
P_R Trỏ tới nút bên phải


DOUBLE_IN(Pdau, Pcuoi, Q, X) //X: dữ liệu cần thêm
{
Node MOI = malloc(); //khởi tạo nút
MOI -> DATA = X;
MOI -> P_L = NULL;
MOI -> P_R = NULL;
if(Pcuoi == NULL){ //list rỗng thì gán MOI làm phần tử đầu và cuối luôn
Pdau = MOI;
Pcuoi = MOI;
}else if(Q == Pdau){ // nếu Q là đầu list thì...
Pdau = MOI; //...gán lại nút đầu thành nút mới
MOI -> P_R = Q; //...nút phải của nút mới thành nút Q
Q -> P_L = MOI; //...nút trái của Q (nút đầu list) thành nút Mới
}else{ //nếu Q là cuối list hoặc ở giữa thì...
//..chèn MỚI vào trước Q
MOI -> P_L = Q -> P_L;
MOI -> P_R = Q;
Q -> P_L = MOI;
//..chèn MỚI vào sau nút trước Q
Node TRUOC = MOI -> P_L;
TRUOC -> P_R = MOI;}}
2. Trình bày (bằng ngôn ngữ tựa C) giải thuật loại bỏ một nút trỏ bởi Q trong danh sách móc nối hai 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ấu trúc như sau:


P_L Trỏ tới nút bên trái (Nút trước)
DATA Chứa dữ liệu
P_R Trỏ tới nút bên phải (Nút sau)


DOUBLE_DEL(Pdau, Pcuoi, Q)
{
if(Pcuoi == NULL){ // list trống thì k có đầu (hoặc cuối)
printf("List empty!");
}else if(Pdau = Pcuoi){ //list có 1 phần tử, xoá Q là thành NULL hết cả lũ
Pdau = NULL;

tải về 35.79 Kb.

Chia sẻ với bạn bè của bạn:
  1   2   3   4   5   6   7   8   9   10   11




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương