首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

新手 关于顺序表

2013-03-12 
新手求助 关于顺序表我最近开始学习数据结构 尝试着自己编写了一下顺序表的初始化和插入的算法 但是无法编

新手求助 关于顺序表
我最近开始学习数据结构 尝试着自己编写了一下顺序表的初始化和插入的算法 但是无法编译通过 错误部分我也没法弄懂 希望大家帮我看看 谢谢了

#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);
}


[解决办法]
++,慢了一点。

引用:
C/C++ code?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253#include "stdio.h"#include "stdlib.h"#define LIST_INIT_SIZE 100      //去掉;#defi……

[解决办法]
把下面的代码直接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);
}


引用:
引用:++,慢了一点。

引用:C/C++ code?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253#include "stdio.h"#includ……

[解决办法]
引用:
引用:++,慢了一点。

引用:C/C++ code?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253#include "stdio.h"#includ……

估计你考错了。
宏相当于替换,有;的话;也会被替换进代码里。
------解决方案--------------------


注意基本功。

热点排行