努力De小李 2021-09-28 13:15 采纳率: 100%
浏览 36
已结题

有没有人知道代码怎么改才能实现这个程序呢

img


#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 101
typedef int ElemType;
typedef struct{
ElemType elem[MAXSIZE];
int length;
}SqList;

void InitList(SqList &L);//构建顺序表L
bool ListDelete(SqList &L,int i);//删除顺序表L中的第i个元素

int main()
{
SqList L;
InitList(L);
int i;

scanf("%d",&i);
bool result = ListDelete(L,i);
if(result==false){//删除失败
    printf("Delete Error.The value of i is illegal!\n");
}else if(result==true){//删除成功
    printf("Delete Success.The elements of the SequenceList L are:\n");

for(int j=0; j<L.length; j++){
        printf(" %d",L.elem[j]);
    }
}
return 0;

}
void InitList(SqList &L)
{
ElemType e;
int i=0;
L.length=0;
scanf("%d",&e);
while(e!=-1)
{
L.elem[i++]=e;
L.length++;
scanf("%d",&e);
}
}

bool ListDelete(SqList &L,int i)
{//请完成本函数的功能,删除L中的第i个元素,删除失败返回false,否则返回true

}

  • 写回答

2条回答 默认 最新

  • 攻城狮Soar 2021-09-28 18:07
    关注

    实现思路:删除指定位置元素后,后面元素要都对应前移,即:
    L.elem[j] = L.elem[j+1];
    移动完成后数组长度减1.
    bool ListDelete(SqList &L,int i)函数实现如下:

    bool ListDelete(SqList &L,int i)
    {
        int j = 0;
        if(i < 0 || i > L.length)
        {
            return false;
        }
        
        for(j = i-1;j < L.length-1;j++)
        {
            L.elem[j] = L.elem[j+1];
        }
        L.length--;
        
        return true;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月23日
  • 已采纳回答 10月15日
  • 创建了问题 9月28日

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料