新手求助 关于顺序表
我最近开始学习数据结构 尝试着自己编写了一下顺序表的初始化和插入的算法 但是无法编译通过 错误部分我也没法弄懂 希望大家帮我看看 谢谢了
#include "stdio.h"数据结构 算法
#include "malloc.h"
#include "stdlib.h"
#define LIST_INIT_SIZE 100;
#define LISTINCREMENT 10;
typedef struct
{
int *elem;
int length;
int listsize;
}SqList;
SqList InitList()
{
SqList L;
L.elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
if(L.elem==0)
exit(0);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return L;
}
void InserList(SqList *p,int i,int x)
{
SqList *newspace;
int j;
if(i<1||i>(p->length+1))
exit(0);
if(p->length==p->listsize)
newspace=(int *)realloc(p->elem,(LIST_INIT_SIZE+LISTINCREMENT)*sizeof(int)));
if(newspace==0)
exit(0);
for(j=p->length;j>=i;j--)
p->elem[j]=p->elem[j-1];
p->elem[i-1]=x;
p->length++;
}
void main()
{
int i,j,n,m;
SqList L;
L=InitList();
printf("input the length\n");
scanf("%d\n",&n);
for(i=0;i<n;i++)
{
printf("input number %d\n",n+1);
scanf("%d\n",&L.elem[i]);
}
scanf("%d\n%d\n",j,m);
InserList(&L,j,m);
}
[解决办法]
#include "stdio.h"
#include "stdlib.h"
#define LIST_INIT_SIZE 100 //去掉;
#define LISTINCREMENT 10 //去掉;
typedef struct
{
int *elem;
int length;
int listsize;
} SqList;
SqList InitList()
{
SqList L;
L.elem = (int *)malloc(LIST_INIT_SIZE*sizeof(int));
if(L.elem==0)
exit(0);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return L;
}
void InserList(SqList *p,int i,int x)
{
int*newspace; //SqList *newspace;类型不匹配
int j;
if(i<1
[解决办法]
i>(p->length+1))
exit(0);
if(p->length==p->listsize)
newspace=(int *)realloc(p->elem,(LIST_INIT_SIZE+LISTINCREMENT)*sizeof(int)); //()数量不匹配
if(newspace==0)
exit(0);
for(j=p->length;
j>=i;
j--)
p->elem[j]=p->elem[j-1];
p->elem[i-1]=x;
p->length++;
}
void main()
{
int i,j,n,m;
SqList L;
L=InitList();
printf("input the length\n");
scanf("%d\n",&n);
for(i=0; i<n; i++)
{
printf("input number %d\n",n+1);
scanf("%d\n",&L.elem[i]);
}
scanf("%d\n%d\n", &j, &m);/////scanf("%d\n%d\n",j,m);
InserList(&L,j,m);
}
[解决办法]
++,慢了一点。
[解决办法]
把下面的代码直接COPY出来编译,我这边是OK的:
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct
{
int *elem;
int length;
int listsize;
}SqList;
SqList InitList()
{
SqList L;
L.elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
if(L.elem==0)
exit(0);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return L;
}
void InserList(SqList *p,int i,int x)
{
SqList *newspace;
int j;
if(i<1
[解决办法]
i>(p->length+1))
exit(0);
if(p->length==p->listsize)
newspace=(SqList *)realloc(p->elem,(LIST_INIT_SIZE+LISTINCREMENT)*sizeof(int));
if(newspace==0)
exit(0);
for(j=p->length;j>=i;j--)
p->elem[j]=p->elem[j-1];
p->elem[i-1]=x;
p->length++;
}
void main()
{
int i,j,n,m;
SqList L;
L=InitList();
printf("input the length\n");
scanf("%d\n",&n);
for(i=0;i<n;i++)
{
printf("input number %d\n",n+1);
scanf("%d\n",&L.elem[i]);
}
scanf("%d\n%d\n",&j,&m);
InserList(&L,j,m);
}
[解决办法]
估计你考错了。
宏相当于替换,有;的话;也会被替换进代码里。
------解决方案--------------------
注意基本功。