Professional Documents
Culture Documents
LOGO
Nội dung
Đẩy A vào:
Giải thuật:
POP (S, T)
{
/* Hàm này thực hiện việc loại bỏ phần tử ở đỉnh
ngăn xếp S đang được trỏ bởi T. Phần tử bị loại sẽ
được thu nhận và đưa ra */
if (T < 0)
printf(“Ngăn xếp CẠN”);
else
{
T =T - 1; // giảm T đi một vị trí
return S[T+1]; // đưa phần tử bị loại ra
}
}
Định giá biểu thức số học
QUEUE_INSERT (F, R, Q, n, X)
if (F == -1)
{/* Cho F và R trỏ tới lối trước và lối sau
// Điều chỉnh con trỏ F khi bổ
của hàng đợi kiểu vòng tròn, được lưu
sung lần đầu
trữ bởi mảng Q có n phần tử. Hàm này
thực hiện bổ sung một phần tử mới X F = 0;
vào lối sau của hàng đợi. Ban đầu khi }
hàng đợi rỗng thì F = R = -1*/ }
if (R == n-1) // Chỉnh lại con trỏ R
R=0
else
R = R + 1;
if (F == R) // Kiểm tra hàng đợi TRÀN
printf(“Hàng đợi TRÀN”);
else // Bổ sung X vào
{
Q[R] = X;
Loại bỏ phần tử của hàng đợi
QUEUE_DELETE (F, R, Q, n)
else
{/* Cho F và R trỏ tới lối trước và lối sau của
hàng đợi kiểu vòng tròn, được lưu trữ bởi mảng
F = F +1
Q có n phần tử. Hàm này thực hiện việc loại bỏ return Y;
một phần tử ở lối trước của hàng đợi và đưa nội }
dung của phần tử đó ra */ }
if (F == -1) // Kiểm tra hàng đợi CẠN
printf(“Hàng đợi CẠN”);
else // Loại bỏ
{
Y = Q[F]; // Đưa phần tử cần loại bỏ ra biến Y
if (F == R) // Hàng đợi chỉ có một phần tử
F = R = -1;
else // Chỉnh lại con trỏ F sau phép loại bỏ
if (F == n-1)
F=0
Nội dung
Thiết kế:
Dùng hai con trỏ chỉ đến đầu và cuối của danh
sách dữ liệu (front và rear)
6. Lập giải thuật thực hiện các phép sau đây đối
với danh sách móc nối vòng:
a) Ghép hai danh sách móc nối vòng có nút “đầu
danh sách” lần lượt trỏ bởi P và Q, thành một
danh sách mà nút đầu danh sách trỏ bởi P.
b) Lập “bản sao” của một danh sách móc nối vòng
có nút đầu danh sách trỏ bởi L.
Bài tập áp dụng