文章目录
- 说明
- 题4-2022/9/14
- 题5-2022/9/14
- 题6-2022/9/14
- 题7-2022/9/14
- 题8-2022/9/21
- 题9-2022/9/21
- 题10-2022/9/21
说明
数据结构代码题来源:B站 我的头发还多还能学
up所提供的代码:代码链接
题4-2022/9/14
my code:
#include<bits/stdc++.h>
using namespace std;
#define maxsize 50
//定义顺序表结构体
typedef struct{
int length;
int data[maxsize];
}Sqlist;
int Revolve(Sqlist &L,int m,int n){
Sqlist temp;//用于暂存储a1~am的元素
for(int i=0;i<=m-1;i++){//把a1到an的元素先暂存在temp顺序表中
temp.data[i]=L.data[i];
}
for(int i=0;i<=n;i++){//把b1到b2的元素赋值(移动)到L的前面
L.data[i]=L.data[m];
m++;
}
for(int i=0;i<=m;i++){//把temp中数据移到L的后面
L.data[n+i]=temp.data[i];
}
return 0;
}
int main(){
Sqlist L;
L={10,{1,2,3,4,5,6,7,8,9,10}};
Revolve(L,4,6);
for(int i=0;i<L.length;i++){
cout<<L.data[i]<<endl;
}
return 0;
}
题5-2022/9/14
my code:
#include<bits/stdc++.h>
using namespace std;
#define maxsize 50
//定义顺序表结构体
typedef struct{
int length;
int data[maxsize];
}Sqlist;
//删除Sqlist中所有值为x的元素
int index_x;
void Del_x(Sqlist &L,int x){
for(int i=0;i<L.length;i++){
if(L.data[i]==x){//删除x元素,其后面的元素全部往前移动一位
index_x=i;
for(;index_x<L.length;index_x++){
L.data[index_x]=L.data[index_x+1];
}
--L.length;
}
}
}
int main(){
Sqlist L;
L={10,{1,2,3,4,2,6,7,2,9,2}};
Del_x(L,2);
for(int i=0;i<L.length;i++){
cout<<L.data[i]<<endl;
}
return 0;
}
题6-2022/9/14
my code:
代码运行结果错误,暂时没有找到哪里的逻辑错了
#include<bits/stdc++.h>
using namespace std;
#define maxsize 50
//定义顺序表结构体
typedef struct{
int length;
int data[maxsize];
}Sqlist;
int index_x;
void Del_st(Sqlist &L,int s,int t){
for(int i=0;i<L.length;i++){
if(L.data[i]>=s&&L.data[i]<=t){
index_x=i;
for(;index_x<L.length;index_x++){
L.data[index_x]=L.data[index_x+1];
}
--L.length;
}
}
}
int main(){
Sqlist L;
L={10,{1,2,3,4,2,6,7,2,9,2}};
Del_st(L,2,6);
for(int i=0;i<L.length;i++){
cout<<L.data[i]<<endl;
}
return 0;
}
题7-2022/9/14
my code:
#include<bits/stdc++.h>
using namespace std;
#define maxsize 50
//定义顺序表结构体
typedef struct{
int length;
int data[maxsize];
}Sqlist;
void Del_repeat(Sqlist &L){
int index;
int k;
for(int i=0;i<L.length;i++){
if(L.data[i]==L.data[i+1]){
for(int j=i+1;j<L.length;j++){
if(L.data[j]==L.data[i]){
++k;
}
else break;
}
index = i+1;
for(;index<L.length;index++){
L.data[index]=L.data[index+k];
}
}
L.length=L.length-k;
k=0;
}
}
int main(){
Sqlist L;
L={10,{1,2,3,3,3,3,4,5,6,6}};
Del_repeat(L);
for(int i=0;i<L.length;i++){
cout<<L.data[i]<<endl;
}
cout<<"end"<<endl;
return 0;
}
题8-2022/9/21
#include<bits/stdc++.h>
using namespace std;
#define maxsize 50
//定义顺序表结构体
typedef struct{
int length;
int data[maxsize];
}Sqlist;
void Merge(Sqlist &L,Sqlist L1,Sqlist L2){
int i,j,k=0;
for(i=0,j=0;i<L1.length&&j<L2.length;){
if(L1.data[i]<L2.data[j]){
L.data[k++]=L1.data[i++];
}
if(L1.data[i]>=L2.data[j]){
L.data[k++]=L2.data[j++];
}
}
while(i<L1.length){
L.data[k++]=L1.data[i++];
}
while(j<L2.length){
L.data[k++]=L2.data[j++];
}
L.length=k;
}
int main(){
Sqlist L,L1,L2;
L1={3,{2,5,9}};
L2={3,{4,8,12}};
Merge(L,L1,L2);
for(int i=0;i<L.length;i++){
cout<<L.data[i]<<endl;
}
return 0;
}
题9-2022/9/21
和up对中位数的理解不同,所以答案也不同
#include<bits/stdc++.h>
using namespace std;
#define maxsize 50
//定义顺序表结构体
typedef struct{
int length;
int data[maxsize];
}Sqlist;
int Median(Sqlist &L,Sqlist L1,Sqlist L2){
int median;//定义中位数
int i=0,j=0,k=0;
while(i<L1.length&&j<L2.length){
if(L1.data[i]<L2.data[j]){
L.data[k++]=L1.data[i++];
}
else{
L.data[k++]=L2.data[j++];
}
}
while(i<L1.length){
L.data[k++]=L1.data[i++];
}
while(j<L2.length){
L.data[k++]=L2.data[j++];
}
L.length=k;//两个顺序表合并完成,开始查找中位数
if(L.length%2!=0){//判断是否为奇数
median=L.data[L.length/2];
return median;//返回中位数
}
if(L.length%2==0){//判断是否为偶数
median=(L.data[L.length/2]+L.data[L.length/2-1])/2;
cout<<"中位数为:"<<median<<endl;
return median;//返回中位数
}
return 0;
}
int main(){
Sqlist L,L1,L2;
L1={3,{2,5,9}};
L2={3,{4,8,12}};
Median(L,L1,L2);
for(int i=0;i<L.length;i++){//打印L顺序表
cout<<L.data[i]<<endl;
}
return 0;
}
题10-2022/9/21
更多推荐
数据结构代码题练习
发布评论