啥也不会!! 2022-03-19 17:53 采纳率: 60%
浏览 1787
已结题

假设一个顺序表中所有元素为整数,设计一个算法,使其中小于零的元素移动到所有大于等于零的前面

假设一个顺序表中所有元素为整数,设计一个算法,使其中小于零的元素移动到所有大于等于零的前面
大家帮看看哪里出错了,第一次写,谢谢各位了


#define MaxSize 100000
#include<stdio.h>
#include<stdlib.h>

typedef int ElemType;
typedef struct{
    ElemType data[MaxSize];
    int length;
}List;

void InitList(List &l){
    l.length=0;
}
int InsElem(List &l,ElemType x,int i){
    int j;
    if(i<1||i>l.length+1)
        return 0;
    for(j=l.length;j>i;j--)
        l.data[j]=l.data[j-1];
    l.data[i-1]=x;
    l.length++;
    return 1;
}
void DispList(List l){
    int i;
    for(i=0;i<l.length;i++)
        printf("%d",l.data[i]);
    printf("\n");
}
void move(List &l){
    int i=0,j=l.length-1;
    while (l.data[i]>=0,i++,l.data[j]<0,j--);
    if (i<j)
        swap(l.data[i],l.data[j]);
    
}

int main(){
    int i;
    ElemType e;
    List l;
    InitList(l);
    InsElem(l,-1,1);
    InsElem(l,9,2);
    InsElem(l,-2,3);
    InsElem(l,0,4);
    InsElem(l,5,5);
    InsElem(l,-3,6); 
    printf("线性表:");DispList(l);
    move(l);
    printf("线性表:");DispList(l);
}

img

  • 写回答

1条回答 默认 最新

  • fuill 2022-03-19 18:13
    关注
    #define MaxSize 100000
    #include<stdio.h>
    #include<stdlib.h>
     
    typedef int ElemType;
    typedef struct{
        ElemType data[MaxSize];
        int length;
    }List;
     
    void InitList(List &l){
        l.length=0;
    }
    void swap(int *a,int *b) 
    {
        int t=*a;*a=*b;*b=t;
    }
    int InsElem(List &l,ElemType x,int i){
        int j;
        if(i<1||i>l.length+1)
            return 0;
        for(j=l.length;j>i;j--)
            l.data[j]=l.data[j-1];
        l.data[i-1]=x;
        l.length++;
        return 1;
    }
    void DispList(List l){
        int i;
        for(i=0;i<l.length;i++)
            printf("%d ",l.data[i]);
        printf("\n");
    }
    void move(List &l){
        int i=0,j=l.length-1;
        /*while (l.data[i]>=0,i++,l.data[j]<0,j--)
        if (i<l.length)
        {
        swap(&l.data[i],&l.data[j]);
        } */
        for(i=0;i<l.length-1;i++)
        for(j=0;j<l.length-1-i;j++)
        if(l.data[j]>l.data[j+1]) swap(&l.data[j],&l.data[j+1]);
    }
     
    int main(){
        int i;
        ElemType e;
        List l;
        InitList(l);
        InsElem(l,-1,1);
        InsElem(l,9,2);
        InsElem(l,-2,3);
        InsElem(l,0,4);
        InsElem(l,5,5);
        InsElem(l,-3,6); 
        printf("线性表:");DispList(l);
        move(l);
        printf("线性表:");DispList(l);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月28日
  • 已采纳回答 3月20日
  • 修改了问题 3月19日
  • 创建了问题 3月19日

悬赏问题

  • ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
  • ¥15 minist数字识别
  • ¥15 在安装gym库的pygame时遇到问题,不知道如何解决
  • ¥20 uniapp中的webview 使用的是本地的vue页面,在模拟器上显示无法打开
  • ¥15 网上下载的3DMAX模型,不显示贴图怎么办
  • ¥15 关于#stm32#的问题:寻找一块开发版,作为智能化割草机的控制模块和树莓派主板相连,要求:最低可控制 3 个电机(两个驱动电机,1 个割草电机),其次可以与树莓派主板相连电机照片如下:
  • ¥15 Mac(标签-IDE|关键词-File) idea
  • ¥15 潜在扩散模型的Unet特征提取
  • ¥15 iscsi服务无法访问,如何解决?
  • ¥15 感应式传感器制作的感应式讯响器