[帕斯卡尔]在队列中的一些操作 – 代码帕斯卡尔
顺便说一句,我有一个朋友可以做作业, 我在这里发布.
在文章中有 8 操作:
1. 检查空: 如果元素数量 (尺寸) 队列= 0 然后返回true, 相比之下
2. 完整测试: 如果元素数量 (尺寸) 队列=最大 (队列的最大元素数量) 然后返回true, 相比之下
3. 进入: Như nhập mảng bình thường: nhập số phần tử, sau đó nhập các phần tử bằng vòng for
4. Xuất: duyệt bằng vòng for rồi xuất.
5. Chèn: chèn vào cuối hàng bằng cách tăng số phần tử (尺寸) 向上 1, sau đó gán phần tử cuối cùng bằng x cần chèn
6. 抹去: Xóa phần tử ở đâu hàng: dùng biến x để lưu lại phần tử đó, sau đó di chuyển các phần tử từ thứ 2 trở đi về trước 1 单元, giảm số phàn tử xuôgns 1
7. Sửa tại vị trí k. Gán phần tử tại vị trí k thành giá trị mới.
8. Sửa phần tử x thành y.
+/ Xây dựng hàm tìm kiếm phần tử x trong hàng: dùng vòng for để tìm vị trí của x, tìm được thì trả về vị trí.
+/ Dùng hàm sửa tại vị trí k để sửa thành phần tử y.
program hangdoi;
uses crt;
const Max = 100; {hang doi co toi da 100 phan tu}
type queue = record
A:array[1..Max] of integer;
size : integer;
End;
var Q:queue;
x,y,k,chon:integer;
function KTRong(Q:queue):boolean; {kiem tra rong}
begin
if Q.size = 0 then KTRong := true
else KTRong := false;
end;
function KTDay(Q:queue):boolean; {kiem tra day}
begin
if Q.size = Max then KTDay := true
else KTDay := false;
end;
procedure nhap(var Q:queue); {nhap hang doi}
var i:integer;
begin
write('Nhap so phan tu cua hang doi : ');
readln(Q.size);
for i:=1 to Q.size do
begin
write('Nhap phan tu thu ',i,' : ');
readln(Q.A[i]);
end;
end;
procedure xuat(Q:queue); {xuat hang doi}
var i:integer;
begin
for i:=1 to Q.size do
write(Q.A[i],' ');
end;
procedure chen(var Q:Queue; x:integer); {chen phan tu vao cuoi hang}
var i:integer;
begin
if KTday(Q) then writeln('hang day, khong the chen them !')
else
begin
Q.size :=Q.size + 1;
Q.A[Q.size] := x;
writeln('Chen thanh cong !');
end;
end;
procedure xoa(var Q:queue; var x:integer); {xoa phan tu}
var i:integer;
begin
if KTRong(Q) then writeln('Hang rong, khong the xoa !')
else
begin
x := Q.A[1];
for i:=1 to Q.size-1 do
Q.A[i] := Q.A[i+1];
Q.size := Q.size - 1;
writeln('Xoa thanh cong !');
end;
end;
function tim_x(Q:queue; x:integer):integer;
var i:integer;
begin
if KTRong(Q) then tim_x := 0
else
begin
for i:=1 to Q.size do
if Q.A[i] = x then
begin
tim_x := i;
break;
end;
end;
end;
procedure sua_k(var Q:queue; var x:integer; k:integer); {sua phan tu o vi tri k thanh x}
var i:integer;
begin
if (k>Q.size+1) or (k<1) then writeln('Vi tri khong hop le !')
else
begin
Q.A[k] := x;
writeln('Sua thanh cong o vi tri ',k,' !');
end;
end;
procedure sua_x(var Q:queue; var x:integer; y:integer); {sua phan tu x thanh y}
var i,j:integer;
begin
j := tim_x(Q,x);
if j = 0 then writeln('Khong tim thay x !')
else
begin
while (j<>0) do
begin
sua_k(Q,y,j);
j := tim_x(Q,x);
end;
end;
end;
BEGIN
writeln('1: Kiem tra hang rong khong');
writeln('2: Kiem tra hang day khong');
writeln('3: Nhap hang doi');
writeln('4: Xuat hang doi');
writeln('5: Chen phan tu trong hang');
writeln('6: Xoa phan tu trong hang');
writeln('7: Sua phan tu o vi tri k trong hang');
writeln('8: Sua phan tu x trong hang thanh y');
writeln('9: Thoat');
while chon <> 9 do
begin
writeln;
writeln('Chon mot trong cac so de lam :');
readln(chon);
case chon of
1: begin
if KTRong(Q) then writeln('Hang doi rong !')
else writeln('Hang khong rong !');
end;
2: begin
if KTDay(Q) then writeln('Hang doi day !')
else writeln('Hang khong day !');
end;
3: begin
nhap(Q);
writeln('Nhap thanh cong !');
end;
4: begin
writeln('Cac phan tu trong hang doi :');
xuat(Q);
end;
5: begin
write('Nhap phan tu can chen :');
readln(x);
chen(Q,x);
end;
6: xoa(Q,x);
7: begin
write('Nhap vi tri can sua :');
readln(k);
write('Sua thanh phan tu nao ? ');
readln(x);
sua_k(Q,x,k);
end;
8: begin
write('Nhap phan tu can sua :');
readln(x);
writeln('Sua ',x,' thanh phan tu nao ? ');
readln(y);
sua_x(Q,x,y);
end;
end;
end;
readln;
END.



最新评论