线性表和数组操作(一)

在一个一维数组中将所有的元素循环左移p(0<p<n)个位置

思想:ab=>ba,aˉ1bˉ1=(ba)ˉ1

#include <stdio.h>
void Reverse(int a,int b,int R[10]){
for(int i=0;i<(b-a+1)/2;i++){
int temp;
temp=R[a+i];
R[a+i]=R[a+(b-a)-i];
R[a+(b-a)-i]=temp;
}
}//对给定数组的特定范围进行逆置
void main(){
int R[10];
for(int i=0;i<10;i++){
R[i]=i+1;
}
Reverse(0,3,R);//逆置前一部分
Reverse(4,9,R);//逆置后一部分
Reverse(0,9,R);//最后总体逆置
for(int i=0;i<10;i++){
printf("%d ",R[i]);
}
}

将两个顺序表按照大小重新组成一个新的顺序表

void MergeList(SqList *L1,SqList *L2){
SqList L3;
InitList(&L3);
ElemType *p1=L1->data;
ElemType *p2=L2->data;
for(int i=0;i<L1->length+L2->length;i++){
if(*p1<*p2){
ListInsert(&L3,i+1,*p1);
p1++;
}
else{
ListInsert(&L3,i+1,*p2);
p2++;
}
}
PrintList(&L3);
}

posted on 2019-07-03 20:19  一仟零一夜丶  阅读(342)  评论(0)    收藏  举报