栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

考研王道2023课后习题代码(2.23)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

考研王道2023课后习题代码(2.23)

第一题(c语言)
#include 
#include 
#include

#define maxn 100

typedef int Elemtype;


typedef struct
{
    Elemtype data[maxn];
    int len;
} SqList;


bool  Del_Min(SqList *L,Elemtype *e)
{

    if(L->len==0)return false;

    *e=L->data[0];
    int pos=0;

    for(int i=0; ilen; i++)
    {
        if(L->data[i]<*e)
        {
            *e=L->data[i];
            pos=i;

        }
    }

    L->data[pos]=L->data[L->len-1];
    L->len--;

    return true;
}



int main()
{

    SqList L;
    L.len=0;
    for(int i=0; i<=10; i++)
    {
        L.data[i]=i;
        L.len++;
    }
    L.data[5]=-99;//最小元素


    int k;
    Del_Min(&L,&k);
    printf("%d",k);//-99




    return 0;
}

第二题
#include 
#include 
#include

#define maxn 100

typedef int Elemtype;


typedef struct
{
    Elemtype data[maxn];
    int len;
} SqList;


bool  Reverse(SqList *L)
{

    if(L->len==0)return false;

    Elemtype t;

    for(int i=0;ilen/2;i++)
    {
        //交换变量
        t=L->data[i];
        L->data[i]=L->data[L->len-i-1];
        L->data[L->len-i-1]=t;
    }

    return true;
}

int main()
{

    SqList L;
    L.len=0;
    for(int i=0; i<=10; i++)
    {
        L.data[i]=i;
        L.len++;
    }

   Reverse(&L);

    for(int i=0; i<=10; i++)
    {
      printf("%d ",L.data[i]);//10 9 8 7 6 5 4 3 2 1
    }








    return 0;
}

第三题
#include 
#include 
#include

#define maxn 100

typedef int Elemtype;


typedef struct
{
    Elemtype data[maxn];
    int len;
} SqList;


void del_x_1(SqList *L,Elemtype e)
{

     int k=0;
    //将不等e的元素挑选出来
    for(int i=0;ilen;i++)
    {
        if(L->data[i]!=e)
        {
            L->data[k]=L->data[i];
            k++;
        }
    }
    L->len=k;
}


void del_x_2(SqList *L,Elemtype e)
{
    int k=0;
    //移动思维
    for(int i=0;ilen;i++)
    {
        if(L->data[i]==e)k++;
        else{
            L->data[i-k]=L->data[i];//向前移动
        }
    }
    L->len-=k;
}
int main()
{

    SqList L;
    L.len=0;
    for(int i=0; i<=10; i++)
    {
        L.data[i]=i;
        L.len++;
    }
    L.data[2]=-99;
    L.data[3]=-99;
    
    //del_x_1(&L,-99);
    del_x_2(&L,-99);

    for(int i=0; i
      printf("%d ",L.data[i]);
    }



    return 0;
}

第四题(双指针)
#include 
#include 
#include

#define maxn 100

typedef int Elemtype;


typedef struct
{
    Elemtype data[maxn];
    int len;
} SqList;


bool Del_s_t(SqList *L,int s,int t)
{

    if(L->len==0)return false;

    if(s>=t) return false;

    int i,j;

    //找到大于等于s的第一个值
    for(i=0; ilen&&L->data[i]=L->len)return false;
    //找到大于t的第一个值
    for(j=i; jlen&&L->data[j]<=t; j++);

    //双指针法(将j后面的元素全部移动到i后面)

    for(; jlen; i++,j++)
    {
        L->data[i]=L->data[j];
    }
    L->len=i;

    return true;
}





int main()
{

    SqList L;
    L.len=0;
    for(int i=0; i<10; i++)
    {
        L.data[i]=i+1;
        L.len++;
    }

    Del_s_t_2(&L,2,4);
    for(int i=0; i
        printf("%d ",L.data[i]);// 1 5 6 7 8 9
    }




    return 0;
}

第五题
#include 
#include 
#include

#define maxn 100

typedef int Elemtype;


typedef struct
{
    Elemtype data[maxn];
    int len;
} SqList;

bool Del_s_t1(SqList *L,Elemtype s,Elemtype t)
{

    if(L->len==0||s>=t)return false;

    int k=0;

    for(int i=0; ilen; i++)
    {
        if(L->data[i]data[i]>t)
        {
            L->data[k]=L->data[i];
            k++;
        }
    }
    L->len=k;
    return true;
}


bool Del_s_t2(SqList *L,Elemtype s,Elemtype t)
{
    if(L->len==0||s>=t)return false;

    int k=0;

    for(int i=0; ilen; i++)
    {
        if(L->data[i]>=s&&L->data[i]<=t)
        {
            k++;
        }
        else
        {
            L->data[i-k]=L->data[i];
        }
    }
    L->len-=k;

    return true;

}





int main()
{

    SqList L;
    L.len=0;

    for(int i=0; i<10; i++) //10 2 3 4 5 2 1 2 1 3
    {
        scanf("%d",&L.data[i]);
        L.len++;
    }

    //Del_s_t1(&L,2,4);
    Del_s_t2(&L,2,4);

    for(int i=0; i
        printf("%d ",L.data[i]);
    }




    return 0;
}

第六题
#include 
#include 
#include

#define maxn 100

typedef int Elemtype;


typedef struct
{
    Elemtype data[maxn];
    int len;
} SqList;

//双指针逐渐像前移动
bool Delete_Same(SqList *L)
{
    if(L->len==0)return false;

    int i,j;
    for(i=0,j=1;jlen;j++)
    {
        if(L->data[i]!=L->data[j])
        {
            L->data[++i]=L->data[j];
        }
    }
    L->len=i+1;//下标从0开始所以+1
    return true;
}



int main()
{

    SqList L;
    L.len=0;

    for(int i=0; i<10; i++) //1 2 2 3 3 4 4 5 5 6
    {
        scanf("%d",&L.data[i]);
        L.len++;
    }

    Delete_Same(&L);
    for(int i=0; i
        printf("%d ",L.data[i]);
    }




    return 0;
}

第七题(Merge)
#include 
#include 
#include

#define maxn 100

typedef int Elemtype;


typedef struct
{
    Elemtype data[maxn];
    int len;
} SqList;


bool  Merge(SqList *A,SqList *B,SqList *C)
{
    if(A->len+B->len>maxn)return false; //C的最大长度为100

    int i=0,j=0,k=0;

    while(ilen&&jlen)
    {
        if(A->data[i]data[j]){
            C->data[k++]=A->data[i++];
        }else{
            C->data[k++]=B->data[j++];
        }
    }

    while(ilen){
        C->data[k++]=A->data[i++];
    }
    while(jlen){
        C->data[k++]=B->data[j++];
    }
    C->len=k;
    return true;
}



int main()
{

    SqList A,B,C;
    A.len=0,B.len=0,C.len=0;

    for(int i=0; i<10; i++) //1 2 3 4 5 6 7 8 9 10
    {
        scanf("%d",&A.data[i]);
        A.len++;
    }

     for(int i=0; i<10; i++) //1 2 3 4 5 6 7 8 9 10
    {
        scanf("%d",&B.data[i]);
        B.len++;
    }

    Merge(&A,&B,&C);

    for(int i=0; i
        printf("%d ",C.data[i]);
    }




    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/832787.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号