努力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日

悬赏问题

  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比