在vc++6.0下使用c语言编写创建线性表函数,错误很多,具体如下。 求高手指导!
#include<stdio.h>#defineMax100typedefstruct{intdata[Max];intlen;}Sqlist;intcSqlist(Sq...
#include <stdio.h>
#define Max 100
typedef struct
{
int data[Max];
int len;
}Sqlist;
int cSqlist(Sqlist *&L,int a[],int n)
{
int i=0;
L=(Sqlist *)malloc(sizeof(Sqlist));
for(i=0;i<n;i++)
{
L.data[i]=a[i];
}
L.len=n;
return 1;
}
void display(Sqlist L)
{
int i;
for(i=0;L.len>i;i++)
{
printf("%d -> ",L.data[i]);
}
}
void main()
{
Sqlist L;
int a[5]={1,2,3,4,5};
int n=5;
cSqlist(L,a,n);
display(L);
} 展开
#define Max 100
typedef struct
{
int data[Max];
int len;
}Sqlist;
int cSqlist(Sqlist *&L,int a[],int n)
{
int i=0;
L=(Sqlist *)malloc(sizeof(Sqlist));
for(i=0;i<n;i++)
{
L.data[i]=a[i];
}
L.len=n;
return 1;
}
void display(Sqlist L)
{
int i;
for(i=0;L.len>i;i++)
{
printf("%d -> ",L.data[i]);
}
}
void main()
{
Sqlist L;
int a[5]={1,2,3,4,5};
int n=5;
cSqlist(L,a,n);
display(L);
} 展开
3个回答
展开全部
#include <stdio.h>
#include <stdlib.h> // malloc
#define Max 100
typedef struct
{
int data[Max];
int len;
}Sqlist;
int cSqlist(Sqlist **L,int a[],int n)
{
int i=0;
*L=(Sqlist *)malloc(sizeof(Sqlist));
for(i=0;i<n;i++)
{
(*L)->data[i]=a[i];
}
(*L)->len=n;
return 1;
}
void display(Sqlist L)
{
int i;
for(i=0;L.len>i;i++)
{
printf("%d -> ",L.data[i]);
}
}
void main()
{
Sqlist *L; // Sqlist L; 这一句已经申请了空间,所以改成指针,在 cSqlist()里面申请空间
int a[5]={1,2,3,4,5};
int n=5;
cSqlist(&L,a,n);//传入L的地址才能改变L的值
display(*L); //
}
#include <stdlib.h> // malloc
#define Max 100
typedef struct
{
int data[Max];
int len;
}Sqlist;
int cSqlist(Sqlist **L,int a[],int n)
{
int i=0;
*L=(Sqlist *)malloc(sizeof(Sqlist));
for(i=0;i<n;i++)
{
(*L)->data[i]=a[i];
}
(*L)->len=n;
return 1;
}
void display(Sqlist L)
{
int i;
for(i=0;L.len>i;i++)
{
printf("%d -> ",L.data[i]);
}
}
void main()
{
Sqlist *L; // Sqlist L; 这一句已经申请了空间,所以改成指针,在 cSqlist()里面申请空间
int a[5]={1,2,3,4,5};
int n=5;
cSqlist(&L,a,n);//传入L的地址才能改变L的值
display(*L); //
}
展开全部
int cSqlist(Sqlist &L,int a[],int n) // L定义为对象引用
{
int i=0;
//L=(Sqlist *)malloc(sizeof(Sqlist)); // 注掉
{
int i=0;
//L=(Sqlist *)malloc(sizeof(Sqlist)); // 注掉
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#include <malloc.h>
#define Max 100
typedef struct
{
int data[Max];
int len;
}Sqlist;
void cSqlist(Sqlist **L,int a[],int n) //L 是指向指针的指针主函数那边传过来的S是个指针
,取地址以后就是指针的指针。这里用要双重指针来接住他
{
int i=0;
if ((*L=(Sqlist *)malloc(sizeof(Sqlist)))==NULL)
{
printf("wrong");
return;
}
(*L)->len=n;
for(i=0;i<n;i++)
{
(*L)->data[i]=a[i];
}
printf("%d\n",(*L)->len);
}
void display(Sqlist *L)
{
int i;
for(i=0;i<L->len;i++)
{
printf("%d -> ",L->data[i]);
}
}
void main()
{
Sqlist *S;
int a[5]={1,2,3,4,5};
int n=5;
cSqlist(&S,a,n);//要传地址,不然它只在函数运行时候有效,函数运行完了以后它会失效。
display(S);
}
我在你程序的基础上改的。要用传地址的方式。
其实我也挺好奇的,我之前用了 一重指针,但是还是错。所以用二重指针,
#include <malloc.h>
#define Max 100
typedef struct
{
int data[Max];
int len;
}Sqlist;
void cSqlist(Sqlist **L,int a[],int n) //L 是指向指针的指针主函数那边传过来的S是个指针
,取地址以后就是指针的指针。这里用要双重指针来接住他
{
int i=0;
if ((*L=(Sqlist *)malloc(sizeof(Sqlist)))==NULL)
{
printf("wrong");
return;
}
(*L)->len=n;
for(i=0;i<n;i++)
{
(*L)->data[i]=a[i];
}
printf("%d\n",(*L)->len);
}
void display(Sqlist *L)
{
int i;
for(i=0;i<L->len;i++)
{
printf("%d -> ",L->data[i]);
}
}
void main()
{
Sqlist *S;
int a[5]={1,2,3,4,5};
int n=5;
cSqlist(&S,a,n);//要传地址,不然它只在函数运行时候有效,函数运行完了以后它会失效。
display(S);
}
我在你程序的基础上改的。要用传地址的方式。
其实我也挺好奇的,我之前用了 一重指针,但是还是错。所以用二重指针,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询