鱼C论坛

 找回密码
 立即注册
查看: 4993|回复: 6

线性表

[复制链接]
发表于 2021-4-13 09:17:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
//把La中奇数位置的元素传给Lc,偶数传给Lb.
//这个为什么没有结果呢?
#include<stdio.h>
#include<stdlib.h>

#define OK 1
#define ERROR 0
#define OVERFLOW -2

typedef int ElemType;
typedef int Status;

const LIST_INIT_SIZE=100;
const LISTINCREMENT=100;
typedef struct
{
        ElemType *elem;
        int length;
        int listsize;
}SqList;

Status ListInit(SqList *L)//构造一个空的线性表
{
        L->elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
        if(!L->elem)
        {
                exit(OVERFLOW);
        }
        L->length=0;
        L->listsize=LIST_INIT_SIZE;
       
        return OK;       
}
Status GetElem1(SqList L)//得到L中位置i上的元素e并返回
{
        int i;
        ElemType *e;
        for(i=0;i<L.length;i++)
        {
                if(i%2==0)
                {
                        *e=L.elem[i];
                }
        }
}
Status GetElem2(SqList L)//得到L中位置i上的元素e并返回
{
        int i;
        ElemType *e;
        for(i=0;i<L.length;i++)
        {
                if(i%2!=0)
                {
                        *e=L.elem[i];
                }
        }
}

int main()
{
        int i;
        SqList *Lb,*Lc;
        SqList La={1,2,3,4,5,6,7};
        ListInit(Lb);
        ListInit(Lc);
        Lb=GetElem1(La);
        Lc=GetElem2(La);
       
        for(i=0;i<7;i++)
                printf("%d",Lb->elem[i]);
                printf("%d",Lc->elem[i]);
       
        return OK;
       
        return OK;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-13 09:25:53 | 显示全部楼层
#include<stdio.h>
#include<stdlib.h>

#define OK 1
#define ERROR 0
#define OVERFLOW -2

typedef int ElemType;
typedef int Status;

const LIST_INIT_SIZE=100;
const LISTINCREMENT=100;
typedef struct
{
        ElemType *elem;
        int length;
        int listsize;
}SqList;

Status ListInit(SqList *L)//构造一个空的线性表
{
        L->elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
        if(!L->elem)
        {
                exit(OVERFLOW);
        }
        L->length=0;
        L->listsize=LIST_INIT_SIZE;
       
        return OK;       
}
Status GetElem1(SqList L)//得到L中位置i上的元素e并返回    --->  你返回啥了?  啥也没返回啊...
{
        int i;
        ElemType *e;
        for(i=0;i<L.length;i++)
        {
                if(i%2==0)
                {
                        *e=L.elem[i];
                }
        }
}
Status GetElem2(SqList L)//得到L中位置i上的元素e并返回    --->   和上面一样,啥也没返回
{
        int i;
        ElemType *e;
        for(i=0;i<L.length;i++)
        {
                if(i%2!=0)
                {
                        *e=L.elem[i];
                }
        }
}

int main()
{
        int i;
        SqList *Lb,*Lc;
        SqList La={1,2,3,4,5,6,7};
        ListInit(Lb);
        ListInit(Lc);
        Lb=GetElem1(La);     //   --->   这里     GetElem1 和  GetElem2返回值都是int  Lb和Lc是什么类型?
        Lc=GetElem2(La);
       
        for(i=0;i<7;i++)
                printf("%d",Lb->elem[i]);
                printf("%d",Lc->elem[i]);
       
        return OK;
       
        return OK;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-13 11:47:34 | 显示全部楼层

*e=L.elem[i]
emmm..这个不算返回吗?我才开始写,有点迷
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-13 13:03:21 | 显示全部楼层
Status GetElem2(SqList L)
{
        int i;
        ElemType *e;                     //这里定义了局部变量
        for(i=0;i<L.length;i++)
        {
                if(i%2!=0)
                {
                        *e=L.elem[i];     //这里是对局部变量赋值
                }
        }
}                                               //函数结束时,局部变量e被系统回收
//出了函数以后函数里的e已经消失了!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-13 13:12:25 | 显示全部楼层

Status GetElem2(SqList L)
{
        int i;
        ElemType *e;                     //这里定义了局部变量
        for(i=0;i<L.length;i++)
        {
                if(i%2!=0)
                {
                        *e=L.elem[i];     //这里是对局部变量赋值
                }
        }
return e;//再写一个这个就可以了吗?
}                                               //函数结束时,局部变量e被系统回收
//出了函数以后函数里的e已经消失了!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-13 13:17:21 | 显示全部楼层
云枭女 发表于 2021-4-13 13:12
Status GetElem2(SqList L)
{
        int i;

你的返回值是Status  也就是int  你这个函数返回的是一个成功与否的状态
不能return e
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-13 13:22:56 | 显示全部楼层
//就按照你的思路来说,函数应该这么改
Status GetElem2(SqList L, ElemType* e)  //返回值是成功与否的状态,那么参数就要加一个返回值
{
        int i;
        //ElemType *e;                     这里改为传入参数
        for(i=0;i<L.length;i++)
        {
                if(i%2!=0)
                {
                        *e=L.elem[i];     //这里是对返回值赋值
                        return OK;         //找到值就返回成功
                }
        }
        return Error;                        //循环结束没有赋值成功则返回错误
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 17:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表