データ構造-王道の授業後題-線形表(1)
3225 ワード
順序表
1.シーケンステーブルから最小要素を削除し、その要素の値を返します.最後のビットで空白の位置を埋めます.
2.順序表Lのすべての要素を逆置し、アルゴリズムの空間複雑度をO(1)とする.
3.長さnの順序表Lに対して、時間の複雑さはO(n)であり、空間の複雑さはO(1)のアルゴリズムであり、このアルゴリズムは線形表のすべての値がXのデータ要素を削除する.
1.シーケンステーブルから最小要素を削除し、その要素の値を返します.最後のビットで空白の位置を埋めます.
bool Delete_min(sqList &L, ElemType &value){
if(L.length<=0){
// ,
return false ;
}
value=L.data[0];
int pos=0;
for(int i=0;i
2.順序表Lのすべての要素を逆置し、アルゴリズムの空間複雑度をO(1)とする.
// ,
// ,
void Reverse(sqList &L){
int i=0;
int j=L.length-1;
ElemType temp=0
for(;i>=j;i++,j++){
temp = L.data[i];
L.data[i] = L.data[j];
L.data[j] = temp;
// ,i,j
}
/*
for(i=0;i
3.長さnの順序表Lに対して、時間の複雑さはO(n)であり、空間の複雑さはO(1)のアルゴリズムであり、このアルゴリズムは線形表のすべての値がXのデータ要素を削除する.
bool Delete_x(sqList &L, ElemType x){
// , x
// i , i
//
int k=0;// k x ,
for(int i=0;i
4.指定された値sとtの間のすべての要素を順序表から削除し、sまたはtが不合理であれば終了する.// , s,t t s
bool del_st(sqList &L,ElemType s,ElemType t){
if(s>t||L.length==0){
//
return false
}
int i,j;
// i t ,
for(i;i
5.指定されたsからtまでのすべての要素をシーケンステーブルから削除します.// x ,
bool del_st_h(sqList &L,ElemType s,ElemType t){
int i,k=0;
if(s>t||L.length==0){
return false;
}
while(is){
//
//
k++;
}
else{
// x
L.data[i-k]=L.data[i];
}
i++;
}
L.length -=k;
return true;
}
6.繰り返したすべての要素を秩序表から削除する// , ,
// ,
bool delete_Same(sqList &L){
if(L.length==0){
return false;
}
for(i=0,j=1;j
7.二つの順序表を新たな順序表に統合する.bool Merge(sqList &A,sqList &B,sqList &C){
if(A.length+B.length>C.MaxSize){
return false;
}
//ABC
int i=0,j=0,k=0;
while(i
8.配列A[m+n](a 1,am,b 1...bn)を(b 1...bn,a 1...am)に変換する// , , b , a
//
typedef int DataType;
void Reverse(DataType A[] ,int left,int right,int arraySize){
if(left>=right||right>=arraySize)
return ;
int mid = (left+right)/2;
for(int i=0;i
9.半角検索//
void search(ElemType A[],ElemType x){
int low =0,high=n-1,mid;
while(low