当前位置: 代码迷 >> 综合 >> ch3 4.从有序顺序表中删除其值在给定s与t之间(要求s<t)的所有元素,如果s或t不合理或者顺序表为空,则显示出错信息并退出运行
  详细解决方案

ch3 4.从有序顺序表中删除其值在给定s与t之间(要求s<t)的所有元素,如果s或t不合理或者顺序表为空,则显示出错信息并退出运行

热度:46   发布时间:2024-02-08 03:17:12.0
#include<iostream>
using namespace std;#define MaxSize 100//从有序顺序表中删除其值在给定s与t之间(要求s<t)的所有元素,如果s或t不合理或者顺序表为空,则显示出错信息并退出运行 
typedef struct{int data[MaxSize];int Length;
}SqList;//扫描L,用j表示第一个要删除的元素,k表示最后一个要删除的元素,锁定位置后从开始删除的位置其后元素依次往前移动(k-j+1)个位置 
bool delete_in(SqList &L,int s,int t) {if(s>=t || L.Length==0)return false;int i,j,k,m;//j,k记录删除的首、尾位置 int flag1=0;int flag2=0; for(i=0;i<L.Length;i++){if(L.data[i]>=s && !flag1){j=i;//找到起始位置 flag1=1;}	if(L.data[i]>t && !flag2) {k=i-1;//找到末尾位置flag2=1; }	}//移动元素位置 m=k-j+1;L.Length=L.Length-m;for(int i=j;i<L.Length;i++)L.data[i]=L.data[i+m];return true; 
}int main(){SqList li;//定义顺序表cout<<"请输入数组长度:";cin>>li.Length;cout<<"请输入值:" ;for(int i=0;i<li.Length;i++){cin>>li.data[i];} int s,t;cout<<"请输入s和t的值:";cin>>s>>t;if(!delete_in(li,s,t))cout<<"出错";else {cout<<"删除后的数组为";for(int i=0;i<li.Length;i++)cout<<li.data[i]<<" ";cout<<endl; }return 0;	
}

 

  相关解决方案