无法输出是怎么回事?

Sasura_321 2017-12-08 08:27:11
//有一个顺序表L,假设元素类型ElemType为整数
//设计一个尽可能高级的算法,将所有奇数移到偶数的前面


#include <stdio.h>
#include<stdlib.h>

#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10

typedef int ElemType;
typedef struct
{
ElemType *elem;
int length;
int listsize;
}SqList;

void InitList(SqList &L,int arr[]) //构造一个线性表
{
L.elem = (ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
int i = 0;
L.length = 0;
for (i = 0; i < 8; i++)
{
L.elem[i] = arr[i];
L.length++;
}
L.listsize = LIST_INIT_SIZE;//初始储存容量
}

void MoveList(SqList &L)
{
int i = 0;
int j = L.length-1;
int temp = 0;

while(i<j)
{
while(i<j && L.elem[i]%2 == 0)
i--;
while(j>i && L.elem[j]%2 == 1)
j++;
if (i < j)
{
temp = L.elem[i];
L.elem[i] = L.elem[j];
L.elem[j] = temp;
}
}
}

void DisList(SqList L) //输出
{
int i = 0;
for(i = 0;i<L.length;i++)
printf("%d", L.elem[i]);
printf("\n");

}
int main()
{
SqList L;
int arr[] = {1,2,3,4,5,6,7,8};
InitList(L,arr);
MoveList(L);
DisList(L);
return 0;
}
...全文
211 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2017-12-11
  • 打赏
  • 举报
回复
#include <stdio.h>
#include<stdlib.h>

#define LIST_INIT_SIZE  100
#define LISTINCREMENT   10

typedef int  ElemType;
typedef  struct
{
    ElemType *elem;
    int length;
    int listsize;
}SqList;

void InitList(SqList &L,int arr[], int size)  //构造一个线性表
{
    int i = 0;
    L.elem = (ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
    L.length = 0;
    for (i = 0; i < size; i++)
    {
        L.elem[i] = arr[i];
        L.length++;
    }
    L.listsize = LIST_INIT_SIZE;//初始储存容量
}

void MoveList(SqList &L)
{
    int i = 0;
    int j = L.length-1;
    int temp = 0;

    while(i<j)
    {
        while(i<j && L.elem[i]%2 == 0)
            i++;    /*从开头向后,需要i++*/
        while(j>i && L.elem[j]%2 == 1)
            j--;    /* 从末尾向前,需要j--*/
        if (i < j)
        {
            temp = L.elem[i];
            L.elem[i] = L.elem[j];
            L.elem[j] = temp;
        }
    }
}

void DisList(SqList L)  //输出
{
    int i = 0;
    for(i = 0;i<L.length;i++)
        printf("%d ", L.elem[i]);
    printf("\n");

}
int main()
{
    SqList L;
    int arr[] = {1,2,3,4,5,6,7,8};
    InitList(L,arr, 8);
    MoveList(L);
    DisList(L);
    return 0;
}
参考一下吧 主要问题是首尾增加的错误;详见代码的注释;
paschen 2017-12-10
  • 打赏
  • 举报
回复
建议单步跟踪程序运行,观察变量变化情况,分析原因
老马何以识途 2017-12-08
  • 打赏
  • 举报
回复
问题可能出在InitList上,参数应该是SqList *,而调用处应该是SqList(&L, arr),这样才能给main函数的L初始化正确的值。
下载代码方式:https://pan.quark.cn/s/ebe6626778c6 笔记本独显利用不足的应对策略 笔记本电脑独立显卡(GPU)利用不足的情况是一种普遍存在的现象,对笔记本的整体表现及用户操作感受造成影响。在本文中,我们将阐述两种策略来提升笔记本独显的利用效率。 独立显卡使用效率的定义 独立显卡在笔记本电脑中承担图形处理任务,其使用效率指的是该硬件组件在实际操作中的活跃程度。当独立显卡的活跃度较低时,笔记本的表现力会受到影响,进而对用户的使用体验产生负面影响。 提升策略一:调整系统设置以优化浏览器对 GPU 的调用 为了增强笔记本独显的使用效率,我们可以通过调整系统设置来优化浏览器对 GPU 的调用。具体操作步骤如下: 1. 评估性能:首先需要评估笔记本的性能状态,以便掌握独立显卡当前的利用情况。 2. 进入搜索功能:通过按住 Win+S 键激活搜索界面,并输入“图形设置”进行查询。 3. 启用硬件加速:在搜索结果中定位并启用硬件加速 GPU 的选项。 4. 添加指定应用:将需要借助独立显卡运行的应用程序,如浏览器等,添加到列表中。 5. 调整图形性能:在相关浏览器中输入网址 https://cznull.github.io/vsbm,以监测 GPU 的使用状态。 提升策略二:通过独立显卡管理界面进行配置 另一种策略是通过独立显卡的管理界面进行配置。具体步骤如下: 1. 桌面操作:在桌面上进行右键点击,选择“NVIDIA 控制面板”选项。 2. 管理三维设置:在 NVIDIA 控制面板中,点击左侧菜单的“管理 3D 设置”。 3. 选择高性能模式:在全局设置部分,将首选图形处理器调整为“高性能 NVIDIA 处理”。 4. 应用特定设置:选择“...

70,040

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧