qq_45690865 2020-03-21 16:12 采纳率: 33.3%
浏览 132

这个程序显示有错误,该怎么改呢?

#include
#define MAXSIZE 20
typedef int ElementType;
typedef int Position;
typedef struct LNode *List;
struct LNode {
ElementType Data[MAXSIZE];
Position Last;
};
List ReadInput();
void PrintList( List L );
List Delete( List L, ElementType minD, ElementType maxD );
int main()
{
List L;
ElementType minD, maxD;
int i;

L = ReadInput();
scanf("%d %d", &minD, &maxD);
L = Delete( L, minD, maxD );
PrintList( L );

return 0;

}
List Delete( List L, ElementType minD, ElementType maxD )
{
int i,j;
for(i=0;iLast+1;i++)
{
if(L->Data[i]>minD&&L->Data[i] {
for(j=i;jLast;j++)
{
L->Data[j]=L->Data[j+1];
}
L->Last--;
i--;
}
}
return L;
}图片说明

图片说明

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-03-21 16:47
    关注

    算法不够优化,不要用两个循环。其实一个循环就可以了。
    用一个变量记录当前读取的下标,另一个记录当前有效数字的最大下标,
    遇到需要删除的跳过,否则每次将前者拷贝到后者。

    List Delete(List L, int min, int max)
    {
    int j = 0;
    for (int i = 0; i < L->Last+1; i++)
    {
    if (L->Data[i] <= min || L->Data[i]>=max) continue;
    L->Data[j++]=L->Data[i];
    }
    L->Last=j-1;
    return L;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊
  • ¥15 求多普勒频移瞬时表达式
  • ¥15 如果要做一个老年人平板有哪些需求