主题:为什么不能执行啊!!?
地中海之心
[专家分:0] 发布于 2008-04-06 18:49:00
这是顺序表的按序号查找!
#include<stdio.h>
#define Max 15
typedef struct
{
int a[Max];
int last;
}SeqList;
int Change(SeqList *L,int b)
{
if(b>Max) return 0;
else return L->a[b-1];
}
void main()
{
SeqList *L;
int c,i;
for(i=0;i<Max-1;i++)
scanf("%d",L->a[i]);
printf("查找的位置c=");
scanf("%d",&c);
printf("%d",Change(L,c));
for(i=0;i<Max-1;i++)
printf("%d",L->a[i]);
}
请各位帮忙指出!谢谢!
回复列表 (共4个回复)
沙发
zcs179895723 [专家分:330] 发布于 2008-04-07 08:56:00
#include<stdio.h>
#include<stdlib.h>
#define Max 3
typedef struct
{
int a[Max];
int last;
}SeqList;
int Change(SeqList *L,int b)
{
if(b>Max) return 0;
else return L->a[b-1];
}
void main()
{
SeqList *L;
int c,i;
L= new SeqList;
if(!L)
{ printf("空间申请失败\n"); exit(0); }
for(i=0;i<Max;i++)
{
scanf("%d",&(L->a[i]));
}
printf("查找的位置c=");
scanf("%d",&c);
printf("%d\n",Change(L,c));
for(i=0;i<Max;i++)
printf("%d",L->a[i]);
}
我帮你改过了,这个程序没问题了。
你这个程序错误有点多:
1 L你没赋值,是一个悬挂指针
2 循环控制也有问题
3 输入scanf里面要取地址
你把现在这个程序和你原来的对比看看吧
板凳
地中海之心 [专家分:0] 发布于 2008-04-07 19:10:00
[quote]
#include<stdlib.h> //*这是什么 啊!?
void main()
{
SeqList *L;
int c,i;
L= new SeqList; //*不是在前面定义了SeqList *L了吗!?还要这样做啊!?
if(!L)
{ printf("空间申请失败\n"); exit(0); }
for(i=0;i<Max;i++)
{
scanf("%d",&(L->a[i]));
}
[/quote]
如果要L=new SeqList那为什么我下面做的是正确的啊!?
#include<stdio.h>
#define MAX 10
typedef struct
{
int a[MAX];
int last;
}SeqList;
void main()
{
int i;
SeqList L;
printf("线性表:\n");
for(i=0;i<MAX;i++)
scanf("%d",&L.a[i]);
int b;
printf("b=");
scanf("%d",&b);
if(b>MAX)
printf("error");
else
printf("%d\n",L.a[b-1]);
}
3 楼
zcs179895723 [专家分:330] 发布于 2008-04-07 20:32:00
#include<stdlib.h> 是包含一个包,本来按照C来说动态申请一个空间使用函数malloc 这个函数包含在stdlib.h里,但是这个是C++,用new就可以做到了,所以这句在这个程序里可以不要
SeqList *L 只是定义了变量L,但是还没有给其分配内存空间,L=new SeqList 是给L分配内存空间,任何一个变量只有给它分配了内存才能使用
4 楼
地中海之心 [专家分:0] 发布于 2008-04-07 20:37:00
谢谢![em2]
我来回复