回 帖 发 新 帖 刷新版面

主题:为什么不能执行啊!!?

这是顺序表的按序号查找!

#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个回复)

沙发

#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里面要取地址
你把现在这个程序和你原来的对比看看吧

板凳

[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 楼

#include<stdlib.h> 是包含一个包,本来按照C来说动态申请一个空间使用函数malloc 这个函数包含在stdlib.h里,但是这个是C++,用new就可以做到了,所以这句在这个程序里可以不要
SeqList *L 只是定义了变量L,但是还没有给其分配内存空间,L=new SeqList 是给L分配内存空间,任何一个变量只有给它分配了内存才能使用

4 楼

谢谢![em2]

我来回复

您尚未登录,请登录后再回复。点此登录或注册