综合题(交换)
#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; }
运行结果: