算法题背诵笔记-建议打印.docxVIP

  • 28
  • 0
  • 约5.39万字
  • 约 80页
  • 2022-10-02 发布于陕西
  • 举报
顺序表递增有序,插入元素x,仍递增有序 int find ( Sqlist L, int x ){ for ( int i=0; iL.length; ++i ){ if( xL.data[i] ) return i ; } return i ; } void insert ( Sqlist L ,int x ){ int j, p ; p=find (L,x) for ( j=L.length-1; j=p;--j ) L.data[j+1]=L.data[j] ; L.data[p]=x ; ++( L.length ) ; } 删除顺序表中所有值为x的数据元素 法一: void delete ( Sqlist L, int x ){ int k=0 ; for ( int i=0; i=L.length-1;++i ) if( L.data[i] !=x ){ L.data[k]=L.data[i] ; ++k ; } L.length=k ; } 法二: void delete ( Sqlist L, int x ){ int k=0 ; for ( int i=0; i=L.length-1;++i ){ if ( L.data[i]==x ) ++k ; else L.data[i-k]=L.data[i]; } L.length=L.length-k ; } 1 从顺序表中删除给定值在s到t之间(包含s 和t)的所有元素 bool delete ( Sqlist L, int s, int t ){ int i, k=0 ; if ( L.length==0 || s=t ) return false ; for ( i=0; iL.length; ++i ){ if ( L.data[i]=s L.data[i]=t ) ++k ; else L.data[i-k]=L.data[i] ; } L.length-=k ; return ture ; } 从有序表中删除所有值重复的元素 bool delete ( Sqlist L ){ if ( L.length==0 ) return false ; int i, j ; for ( i=0, j=1; jL.length; ++j ) if ( L.data[i] !=L.data[j] ) L.data[++i]=L.data[j] ; L.length=i+1 ; return ture ; } 从有序表L中删除值在给定值s到t之间(包含 s和t)的所有元素 bool delete ( Sqlist L, int s, int t ){ int i, j ; if ( s=t || L.length==0 ) return false ; for ( i=0; iL.length L.data[i]s; ++i ) ; if ( i=L.length ) return false ; for (j=i; jL.length L.data[j]=t; ++j ) ; for ( ; jL.length; ++i, ++j ) L.data[i]=L.data[j] ; L.length=i ; return ture ; } 两个递增有序表合并成一个递增有序表 bool merge ( Sqlist A, Sqlist B, Sqlist C ){ if ( A.length+B.lengthC.maxsize ) return false ; int i=j=k=0 ; while ( iA.length jB.length ){ if ( A.data[i]B.data[j] ) C.data[k++]=A.data[i++] ; else C.data[k++]=B.data[j++] ; } while ( iA.length ) C.data[k++]=A.data[i++] ; while ( jB.length ) C.data[k++]=A.data[j++] ; return ture ; } 2 将(a1,a2,a3……am,b1,b2,……bn)转换成 ( b1,b2,……bn,a1,a2,a3,……am ) void Reverse (int A[ ], int m, int n, int size ){ if ( m=n || n=arry ) return ; int mid=(m+n)/2 ; for ( int i=0; i=mid-m

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档