编译没有报错,运行后结果不对,我想要的结果是输出: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;}