怂批一个 2022-04-25 00:21 采纳率: 66.7%
浏览 70
已结题

线性表按顺序存储方式存储元素,最后输出并显示在屏幕上

编译没有报错,运行后结果不对,我想要的结果是输出:Xiaoyidong 和Xiaoyi&Dong和Xiaoyi&ong,求同志们帮我看看问题在哪
要求如下:

img


代码如下:

img

img

#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 6
#define LISTINCREMENT 5
#define ERROR 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef char ElemType;
typedef struct{
ElemType *p;
ElemType *q;
ElemType *elem;
ElemType *newbase;
int length;
int Listsize;}SqList;

Status InitList(SqList &L){
L.elem=(ElemType )malloc(MAXSIZEsizeof(ElemType));
if(!L.elem){exit(OVERFLOW);}
L.length = 0;
L.Listsize = MAXSIZE;
return OK;}

Status ListDelete(SqList&L,int i,ElemType&e){ ElemType *p;
ElemType *q;
if((i<1)||(i>L.length))
return ERROR;
p=&(L.elem[i-1]);
e=p;
q=L.elem+L.length-1;
for(++p;p<=q;++p)
(p-1);
--L.length;
return OK;}

Status ListInsert(SqList&L,int i,ElemType e){ ElemType *p;
ElemType *q;
ElemType *elem;
ElemType newbase;
if(i<1||i>L.length+1)return ERROR;
if(L.length>=L.Listsize){
newbase=(ElemType
)realloc(L.elem,(L.Listsize+LISTINCREMENT)sizeof(ElemType));
if(!newbase)exit(OVERFLOW);
L.elem=newbase;
L.Listsize+=LISTINCREMENT;}
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);
p>=q;
--p)
(p+1)=*p;
*q=e;
++L.length;
return OK;}

Status Output(SqList&L){
int i;
for(i=0;i<L.length;i++)
printf("c%",L.elem[i]);
printf("\n");
return 0; }

int main(){
SqList L;
InitList(L);
int i=0;
char e;char name[10]={'X','i','a','o','y','i','D','o','n','g'};
for(i=0;i<10;i++)
Output(L);
ListInsert(L,7,'&');
Output(L);
ListDelete(L,8,e);
Output(L);
return 0;}


  • 写回答

1条回答 默认 最新

  • fuill 2022-04-25 07:43
    关注

    img

    
    #include<stdio.h>
    #include<stdlib.h>
    #define MAXSIZE 15
    #define LISTINCREMENT 5
    #define ERROR 0
    #define OK 1
    #define ERROR 0
    #define OVERFLOW -2
    typedef int Status;
    typedef char ElemType;
    typedef struct
    {
        ElemType *p;
        ElemType *q;
        ElemType elem[MAXSIZE];
        ElemType *newbase;
        int length;
        int Listsize;
    } SqList;
    
    SqList InitList(SqList L)
    {
        L.length = 0;
        L.Listsize = MAXSIZE;
        return L;
    }
    
    SqList ListDelete(SqList L,int i)
    {
        if((i<1)||(i>L.length))
            exit(ERROR);
        for(int j=i-1; j<L.length-1; j++)
            L.elem[j]=L.elem[j+1];
        L.length--;
        return L;
    }
    
    SqList ListInsert(SqList L,int i,ElemType e)
    {
        if(i<1||i>L.length+1)
            exit(ERROR);
        for(int j=L.length; j>=i; j--)
        {
            L.elem[j]=L.elem[j-1];
        }
        L.elem[i-1]=e;
        L.length++;
        return L;
    }
    
    Status Output(SqList L)
    {
        int i;
        for(i=0; i<L.length; i++)
            printf("%c",L.elem[i]);
        printf("\n");
        return 0;
    }
    
    int main()
    {
        SqList L;
        L=InitList(L);
        int i=0;
        char e;
        char name[10]= {'X','i','a','o','y','i','D','o','n','g'};
        for(i=0; i<10; i++)
        {
            L.elem[i]=name[i];
            L.length++;
        }
        L=ListInsert(L,7,'&');
        Output(L);
        L=ListDelete(L,8);
        Output(L);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月3日
  • 已采纳回答 4月25日
  • 修改了问题 4月25日
  • 创建了问题 4月25日

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大