编译没有报错,运行后结果不对,我想要的结果是输出:Xiaoyidong 和Xiaoyi&Dong和Xiaoyi&ong,求同志们帮我看看问题在哪
要求如下:
#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;}
#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;
}