如何将一个顺序表中元素逆置
本来还想用笨方法的,奈何是学算法的,还是要更高的效率
#define maxlen 1000
typedef struct{
Datatype data[maxlen];
int last;
}SequenList;
SequenList x,*L;
void SquenListInvert(SequenList *L){
int i,temp;
int n=L->last;
for(i=0;i<n/2;i++){
temp=L->data[i];
L->data[i]=L->data[n-i-1];
L->data[n-i-1]=temp;
}
}
顺序表按值查找(返回,从左到右,从右到左)
据说是二班学委记的题目,太模糊
void SqLlocate(SequenList *L,Datatype x){ //全部查找,从左到右
int i,z=0;
for(i=0;i<=L->last;i++){
if(L->data[i]==x){
printf("%d",i+1);
z=1;
}
if(z==0){
printf("-1");
}
}
}
void SqLlocate(SequenList *L,Datatype x){ //只查找一个,从左到右
int i,z=0;
for(i=0;i<=L->last;i++){
if(L->data[i]==x){
printf("%d",i+1);
z=1;
break;
}
if(z==0){
printf("-1");
}
}
}
void SqLlocate(SequenList *L,Datatype x){. //查找全部,从右到左
int i,z=0;
for(i=L->last;i>=0;i--){
if(L-data[i]==x){
printf("%d",i+1);
z=1;
}
if(z==0){
printf("-1");
}
}
}
void SqLlocate(SequenList *L,Datatype x){. //只查找一个,从右到左
int i,z=0;
for(i=L->last;i>=0;i--){
if(L-data[i]==x){
printf("%d",i+1);
z=1;
break;
}
if(z==0){
printf("-1");
}
}
}
建顺序表
SequenList *InitSequenList(){ SequenList *L;
L=(SequenList *)malloc(sizeof(SequenList));
L->last=-1;
return L;
}
建链表
typedef struct node{
int data;
struct node *next;
}LinkList;
LinkList *L;
LinkList *InitLinkList(LinkList *L){
free(L);
L->next=NULL;
return(L);
}