鱼C论坛

 找回密码
 立即注册
查看: 4248|回复: 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 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<stdlib.h>

  3. #define OK 1
  4. #define ERROR 0
  5. #define OVERFLOW -2

  6. typedef int ElemType;
  7. typedef int Status;

  8. const LIST_INIT_SIZE=100;
  9. const LISTINCREMENT=100;
  10. typedef struct
  11. {
  12.         ElemType *elem;
  13.         int length;
  14.         int listsize;
  15. }SqList;

  16. Status ListInit(SqList *L)//构造一个空的线性表
  17. {
  18.         L->elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
  19.         if(!L->elem)
  20.         {
  21.                 exit(OVERFLOW);
  22.         }
  23.         L->length=0;
  24.         L->listsize=LIST_INIT_SIZE;
  25.       
  26.         return OK;      
  27. }
  28. Status GetElem1(SqList L)//得到L中位置i上的元素e并返回    --->  你返回啥了?  啥也没返回啊...
  29. {
  30.         int i;
  31.         ElemType *e;
  32.         for(i=0;i<L.length;i++)
  33.         {
  34.                 if(i%2==0)
  35.                 {
  36.                         *e=L.elem[i];
  37.                 }
  38.         }
  39. }
  40. Status GetElem2(SqList L)//得到L中位置i上的元素e并返回    --->   和上面一样,啥也没返回
  41. {
  42.         int i;
  43.         ElemType *e;
  44.         for(i=0;i<L.length;i++)
  45.         {
  46.                 if(i%2!=0)
  47.                 {
  48.                         *e=L.elem[i];
  49.                 }
  50.         }
  51. }

  52. int main()
  53. {
  54.         int i;
  55.         SqList *Lb,*Lc;
  56.         SqList La={1,2,3,4,5,6,7};
  57.         ListInit(Lb);
  58.         ListInit(Lc);
  59.         Lb=GetElem1(La);     //   --->   这里     GetElem1 和  GetElem2返回值都是int  Lb和Lc是什么类型?
  60.         Lc=GetElem2(La);
  61.       
  62.         for(i=0;i<7;i++)
  63.                 printf("%d",Lb->elem[i]);
  64.                 printf("%d",Lc->elem[i]);
  65.       
  66.         return OK;
  67.       
  68.         return OK;
  69. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

发表于 2021-4-13 13:03:21 | 显示全部楼层
  1. Status GetElem2(SqList L)
  2. {
  3.         int i;
  4.         ElemType *e;                     //这里定义了局部变量
  5.         for(i=0;i<L.length;i++)
  6.         {
  7.                 if(i%2!=0)
  8.                 {
  9.                         *e=L.elem[i];     //这里是对局部变量赋值
  10.                 }
  11.         }
  12. }                                               //函数结束时,局部变量e被系统回收
  13. //出了函数以后函数里的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;     //这里是对局部变量赋值
                }
        }
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 | 显示全部楼层
  1. //就按照你的思路来说,函数应该这么改
  2. Status GetElem2(SqList L, ElemType* e)  //返回值是成功与否的状态,那么参数就要加一个返回值
  3. {
  4.         int i;
  5.         //ElemType *e;                     这里改为传入参数
  6.         for(i=0;i<L.length;i++)
  7.         {
  8.                 if(i%2!=0)
  9.                 {
  10.                         *e=L.elem[i];     //这里是对返回值赋值
  11.                         return OK;         //找到值就返回成功
  12.                 }
  13.         }
  14.         return Error;                        //循环结束没有赋值成功则返回错误
  15. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 22:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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