#include
#include
#define MaxSize 50
typedef int ElemType;
typedef struct
{
ElemType elem[MaxSize];
int length;
} SqList;
void DispList(SqList *L);
void InitList(SqList *&L);
int ListInsert(SqList *&L,int i,ElemType e);
int ListEmpty(SqList *L);
int main() //main() function
{ // 调用对应的函数,完成顺序表的插入功能
/********** Begin **********/
int M,a,b,c;
SqList L;
InitList(L);
printf("(1)初始化顺序表L\n");
printf("(2)输入顺序表的长度M:\n");
scanf("%d",&M);
printf("(3)依次插入M个元素\n");
for(i=0;iscanf("%d",&a);
printf("(4)输入要插入元素的位置\n")
scanf("%d",&b);
ListInsert(L,int b,ElemType a);
printf("\n");
printf("(5)输入要插入的数据元素的值:");
scanf("%d",%c);
printf("\n");
printf("(5)输入插入后的顺序表:")
void DispList(L);
/********** End **********/
}
/*****顺序表的基本操作*****/
void InitList(SqList *&L)
{ // 操作结果:构造一个空的顺序线性表L
/********** Begin **********/
L=(SqList *)malloc(sizeof(SqList));
L->length=0;
/********** End **********/
}
int ListInsert(SqList *&L,int i,ElemType e)
{ // 初始条件:顺序线性表L已存在,1≤i≤ListLength(L)+1
// 操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1
/********** Begin **********/
int j;
if(i<1||i>L->length+1||L->length==MaxSize)
return false;
i--;
for(j=L->length;j>i;j--)
L->elem[j]=L->elem[j-i];
L->elem[i]=e;
L->length++;
return true;
/********** End **********/
}
void DispList(SqList *L)
{ // 初始条件:顺序线性表L已存在
// 操作结果:依次对L的每个数据元素调用函数vi()输出
/********** Begin **********/
int i;
if (ListEmpty(L)) return;
for (i=0;ilength;i++)
printf("%c",L->elem[i]);
printf("\n");
/********** End **********/
}
int ListEmpty(SqList *L)
{
return(L->length==0);
}
求问int main哪里出错了,怎么输出如下格式
修改完善如下,改动处见注释,供参考:
#include <stdio.h>
#include <malloc.h>
#define MaxSize 50
typedef int ElemType;
typedef struct
{
ElemType elem[MaxSize];
int length;
} SqList;
void DispList(SqList *L);
void InitList(SqList *&L);
int ListInsert(SqList *&L,int i,ElemType e);
int ListEmpty(SqList *L);
int main() //main() function
{ // 调用对应的函数,完成顺序表的插入功能
/********** Begin **********/
int M,a,b,c;
SqList* L; //SqList L; 修改
printf("(1)初始化顺序表L\n");
InitList(L);
printf("(2)输入顺序表的长度M:\n");
scanf("%d",&M);
printf("(3)依次插入M个元素\n");
for(int i=0;i<M;i++) { //修改
scanf("%d",&a);
ListInsert(L,i+1,a); //修改
}
printf("(4)输入要插入元素的位置\n");//这里缺 ';'分号
scanf("%d",&b);
//printf("\n");
printf("(5)输入要插入的数据元素的值:");
scanf("%d",&c); //scanf("%d",%c); 修改
ListInsert(L,b,c); //修改
//ListInsert(L,int b,ElemType a);
//printf("\n");
printf("(5)输入插入后的顺序表:");//这里缺 ';'分号
DispList(L); //void DispList(L); 修改
return 0;
/********** End **********/
}
/*****顺序表的基本操作*****/
void InitList(SqList *&L)
{ // 操作结果:构造一个空的顺序线性表L
/********** Begin **********/
L=(SqList *)malloc(sizeof(SqList));
L->length=0;
/********** End **********/
}
int ListInsert(SqList *&L, int i, ElemType e)
{ // 初始条件:顺序线性表L已存在,1≤i≤ListLength(L)+1
// 操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1
/********** Begin **********/
int j;
if(i < 1 || i > L->length+1 || L->length == MaxSize)
return false;
i--;
for(j = L->length;j > i;j--)
L->elem[j]=L->elem[j-1]; //L->elem[j-i]; 修改
L->elem[i]=e;
L->length++;
return true;
/********** End **********/
}
void DispList(SqList *L)
{ // 初始条件:顺序线性表L已存在
// 操作结果:依次对L的每个数据元素调用函数vi()输出
/********** Begin **********/
int i;
if (ListEmpty(L)) return;
for (i=0;i<L->length;i++)
printf("%d ",L->elem[i]); //修改
//printf("%c",L->elem[i]);
printf("\n");
/********** End **********/
}
int ListEmpty(SqList *L)
{
return(L->length==0);
}
怎么就不如你意了呢?不是你要将99插入1位置的么?