综合题(交换)

#include<stdio.h>
#define MaxSize 50

typedef struct LNode{
    int data[MaxSize];
    int length;
}LNode;

//初始化顺序表
void init(LNode &L){
    L.length = 0;
} 

//构建顺序表
void create(LNode &L){
    init(L);
    int x;
    scanf("%d",&x); 
    while(x!=-1&&L.length<MaxSize){
        L.data[L.length] = x;
        L.length++;
        scanf("%d",&x);
    }
}


//显示顺序表内容
void show(LNode L){
    int i = 0;
    while(i<L.length){
        printf("%d   ",L.data[i]);
        i++;
    }
}

//二分查找法(适用于有序)
int binSearch(LNode L,int x){
    int mid,high,low;
    high = L.length -1;
    low = 0;
    while(low<high){
        mid = (high + low)/2;
        if(L.data[mid]==x){
            return mid;   //返回的是数组下标 
        }else{
            if(L.data[mid]>x){
                high = mid -1;
            }else{
                low = mid + 1;
            }
        } 
    }    
    return -1;
} 

//替换元素
int exchange1(LNode &L){
    int index =  binSearch(L,3);
    if(index == -1){
        return -1;
    }else{
        int temp = L.data[index];
        L.data[index] = L.data[index + 1];
        L.data[index + 1] = temp;
        return 1;
    }
} 



int main(){
    LNode L;
    create(L);
    exchange1(L);
    show(L);
    return 0;
} 

运行结果:

 

posted on 2019-07-03 15:03  楠楠要上天  阅读(204)  评论(0编辑  收藏  举报