数据结构代码题练习

说明

数据结构代码题来源: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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值