大大大陆561 2022-10-20 18:22 采纳率: 100%
浏览 24
已结题

看一看有什么问题,为什么会这样

代码
#ifndef _SQLIST_H
#define _SQLIST_H
#define MaxSize 100

typedef int ElemType;


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

void InitList(SqList &L);
void DestroyList(SqList L);
int GetLength(SqList L);
int GetElem(SqList L, int i, ElemType &e);
int Locate(SqList L,ElemType x);
int InsElem(SqList &L, ElemType x, int i);
int DelElem(SqList &L, int i);
void DispList(SqList L);
void CreateList(SqList &L, ElemType a[], int n);

#endif
#include <cstdio>
#include <algorithm>
#include <cstring>

using namespace std;

#define MaxSize 100
typedef int ElemType;

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

void InitList(SqList &L)
{
    L.length = 0;
}

void DestroyList(SqList L)
{}

int GetLength(SqList L)
{
    return L.length;
}

int GetElem(SqList L, int i, ElemType &e)
{
    if(i < 1 || i > L.length)
        return 0;
    else
    {
        e = L.data[i - 1];
        return 1;
    }
}

int Locate(SqList L, ElemType x)
{
    int i = 0;
    while (i < L.length && L.data[i] != x)
        i ++;
    if(i >= L.length)    return (0);
    else    return (i + 1);
}

int InsElem(SqList &L, ElemType x, int i)
{
    int j;
    if(i < 1 || i > L.length + 1)
        return 0;
    for(j + L.length; j > i - 1; j --)
        L.data[j] = L.data[j - 1];
    L.data[i - 1] = x;
    L.length++;
    return 1;
}

int DelElem(SqList &L, int i)
{
    int j;
    if(i < 1 || i > L.length)
        return 0;
    for(j = i; j < L.length; j++)
        L.data[j - 1] = L.data[j];
        L.length--;
        return 1;
}

void DispList(SqList L)
{
    int i;
    for(i = 0; i < L.length; i++)
        printf("%d ",L.data[i]);
        printf("\n");
}

void CreateList(SqList &L, ElemType a[], int n)
{
    int i, k = 0;
    for(i = 0; i < n; i++)
    {
        L.data[k] = a[i];
        k ++;
    }
    L.length = k;
}
#include <iostream>
#include <cstdio>
#include "SqList.h"

using namespace std;

void basic_foo()
{
    SqList L,L1,L2;
    InitList(L);
    InitList(L1);
    InitList(L2);
    int n,a[MaxSize];
    cin >> n;
    for(int i = 0; i < n; i++)
    {
        cin >> a[i];
    }
    int k = 0, j = 0;
    int r[MaxSize],o[MaxSize];
    for(int i = 0; i < n; i++)
    {
        if(a[i] % 2 == 0)
        {
            o[k] = a[i];
            k++;
        }
        else
        {
            r[j] = a[i];
            j++;
        }
    }
    CreateList(L,a,n);
    printf("L:");        DispList(L);
    printf("拆分\n");
    int n1 = sizeof(r) / sizeof(r[0]);
    int n2 = sizeof(o) / sizeof(o[0]);
    CreateList(L2, r, n1);
    printf("L:");        DispList(L2);
    printf("\n");
    CreateList(L1, o, n2);
    printf("L1:");        DispList(L1);
    printf("\n");
    DestroyList(L);
    DestroyList(L1);
    DestroyList(L2);
}

void expand_foo()
{
    
    
}

int main()
{
    basic_foo();
    expand_foo();
    return 0;
}
运行结果及报错内容

img

我想要达到的结果

img

  • 写回答

1条回答 默认 最新

  • 於黾 2022-10-20 18:38
    关注

    int n1 = sizeof(r) / sizeof(r[0]);
    int n2 = sizeof(o) / sizeof(o[0]);
    这是在干啥呢,r的长度不是固定的吗,还用算吗,不就是MaxSize吗
    你应该在前面录入数据的时候先统计好到底有几个奇数,几个偶数,拆分的链表就按照奇数偶数的个数来创建,而不是按MaxSize长度来创建,否则只有前面几个是数据,后面全是乱码

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月29日
  • 已采纳回答 10月21日
  • 创建了问题 10月20日

悬赏问题

  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程