Chèn phần tử vào danh sách

Một phần của tài liệu Giáo trình Cấu trúc dữ liệu và giải thuật - CĐ Nghề Cơ điện Hà Nội (Trang 39 - 40)

Khi chèn phần tử có nội dung x vào tại vị trí p của danh sách L thì sẽ xuất hiện các khả năng sau:

- Mảng đầy: mọi phần tử của mảng đều chứa phần tử của danh sách, tức là phần tử cuối cùng của danh sách nằm ở vị trí cuối cùng trong mảng. Nói cách khác, độ dài của danh sách bằng chỉ số tối đa của mảng; Khi đó không còn chỗ cho phần tử mới, vì vậy việc xen là không thể thực hiện được, chương trình con gặp lỗi.

- Ngược lại ta tiếp tục xét:

Nếu p không hợp lệ (p>last+1 hoặc p<1 ) thì chương trình con gặp lỗi; (Vị trí xen p<1 thì khi đó p không phải là một vị trí phần tử trong trong danh sách đặc. Nếu vị trí p>L.last+1 thì khi xen sẽ làm cho danh sách L không còn là một danh sách đặc nữa vì nó có một vị trí trong mảng mà chưa có nội dung.)

Nếu vị trí p hợp lệ thì chúng ta tiến hành xen theo các bước sau: + Dời các phần tử từ vị trí p đến cuối danh sách ra sau 1 vị trí. + Độ dài danh sách tăng 1.

+ Đưa phần tử mới vào vị trí p

Chương trình con chèn phần tử x vào vị trí p của danh sách L có thể viết như sau:

Procedure Insert_List(X : Kieuphantu, P : Position); Var Q : Position;

Begin

if (Last=MaxLength) then Write("Danh sach day"); else if ((P < 1) or (P > Last))

Write("Vi tri khong hop le"); Else

begin

{Dời các phần tử từ vị trí p đến cuối danh sách sang phải 1 vị trí} For Q:=Last downto P do

Elements[Q]:=Elements[Q-1]; {Đưa X vào vị trí P}

Elements[P]=X;

{Tăng độ dài danh sách lên 1 } Last:=Last + 1;

End; End;

Một phần của tài liệu Giáo trình Cấu trúc dữ liệu và giải thuật - CĐ Nghề Cơ điện Hà Nội (Trang 39 - 40)

Tải bản đầy đủ (PDF)

(94 trang)