2024王道数据结构课后习题代码( 二 )


2.2.4 删除给定值之间
04、从有序顺序表中删除其值在给定值s与t之间(要求s
bool test4(SqList &l){int s,t;//范围 int i,j;//定位 printf("请输入s和t的值:");scanf("%d%d",&s,&t);if(l.length==0||s>t)return false;for(i=0;l.data[i]&&il.length)return false;for(j=i;j
2.2.5 删除值在给定值之间
05.从顺序表中删除其值在给定值s与t之间(包含s和t , 要求s
bool test5(SqList &l){int s,t;//范围 int mark=0;//标记符合范围的数据元素 printf("请输入s和t的值:");scanf("%d%d",&s,&t);if(l.length==0||s>t)return false;for(int i=0;i=s&&l.data[i]<=t){mark++;continue; }l.data[i-mark]=l.data[i];}l.length-=mark;print(l);return true;}
2.2.6 删重复元素
06.从有序顺序表中删除所有其值重复的元素 , 使表中所有元素的值均不同 。
void test6(SqList &l){int mark=0;for(int i=0;i
2.2.7 合并有序顺序表
07.将两个有序顺序表合并为一个新的有序顺序表 , 并由函数返回结果顺序表 。
bool test7(SqList l1,SqList l2,SqList &l3){if (l1.length+l2.length>maxsize)//顺序表的最大长度return false;int i=0,j=0,k=0;while(i
2.2.8数组中交换顺序表位置
08.已知在一维数组A[m+n]中依次存放两个线性表(a1, a2, a3,…, am)和(b1, b2, b3,…,bn) 。编写一个函数,将数组中两个顺序表的位置互换,即将(b1, b2, b3…,bn
,)放在(a1, a2 a3…,am")的前面 。
bool reverse(int start,int end,SqList &l)//翻转 (参考第二题方法) {if(end>=l.length||start>=end)return false;int temp=0;//交换对称位置的数int mid=(start+end)/2;for(int i=0;i<=mid-start;i++)//需要小于等于 ? 如果< , 中间两个换不过来 {temp=l.data[start+i];l.data[start+i]=l.data[end-i];l.data[end-i]=temp;} print(l);return true;}void test8(SqList l,int n) //顺序表是m+n把n的部分放到m的前面 , 相当于顺序表整体反转 , m和n的部分再各自翻转 {reverse(0,l.length-1,l);//整体翻转 reverse(0,n-1,l);//翻转m部分 reverse(n,l.length-1,l);//翻转n部分 }
2.2.9 查找并插入
09.线性表(a, a2s a3,s…, an)中的元素递增有序且按顺序存储于计算机内 。要求设计一个算法 , 完成用最少时间在表中查找数值为x的元素 , 若找到 , 则将其与后继元素位置相交换 , 若找不到 , 则将其插入表中并使表中元素仍递增有序 。
bool test9(SqList &l){int x; printf("请输入你要查找的数;");scanf("%d",&x) ;for(int i=0;i