顺序线性表习题
1.已知一个向量A中的元素按元素值非递减有序排列,编写一个过程插入一个元素x后保持该向量是有序的。
Type vector=array[0..max] of integer;
Procedure insert (var A: vector ;var n,x:integer);
Var i,j:integer;
Begin
If (x>=A[n]) then A[n+1]:=x
Else begin i:=1;
While (x>=A[I]) do i:=i+1;
For j:=n downto A[j+1]:=A[j];
A[i]:=x;n:=n+1;
end;
End;
2.已知一个向量中的元素按元素值非递减有序排列,编写一个过程删除向量中多余的值相同的元素。
Procedure del(var A:vector;var n:integer);
Var I;j:integer;
Begin i:=1; While(i<=n-1) do
If (A[i]<>A[i+1]) then i:=i+1
Else begin for j:=(i+2) to n do A[j-1]:=A[j];
n:=n-1;end;end;
3.编写一个过程将一个向量A(有n个元素)分拆成两个向量,使A中大于等于0的元素存放在B中,小于0的元素存放在C中。
4.已知在一维数组A[1:m+n]中依次存放着两个向量(a1,a2,…,a m)和(b1,b2,…,
b m),编写一个过程将两个向量的位置互换,即把(b1,b2,…,b m)放到(a1,a2,…,
a m)的前面。
Procedure exchang(var A:vector;m,n:integer);
Var i,j,t:integer;
Begin
read(m,n);
For i=1 to m+n
Read(A[i]);
For i:=m downdo 1 step –1
Begin
t:=A[i];
A[i+j]:=A[i+j+1];
A[i+n]:=t;
End;
For i:=0 to m+n
Write(A[I]);
End;
5.有两个向量A(有m 个元素)和B(有n 个元素),其元素均以从小到大的升序排列,编写一个过程将它们合并成一个向量C,要求C的元素也是以从小到大的升序排列。
(P22,算法2.2)。