线性表
//把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;
}
}
}
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;
}
}
}
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);
printf("%d",Lc->elem);
return OK;
return OK;
} #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;
}
}
}
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;
}
}
}
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返回值都是intLb和Lc是什么类型?
Lc=GetElem2(La);
for(i=0;i<7;i++)
printf("%d",Lb->elem);
printf("%d",Lc->elem);
return OK;
return OK;
} yuxijian2020 发表于 2021-4-13 09:25
*e=L.elem
emmm..这个不算返回吗?我才开始写,有点迷{:9_234:} Status GetElem2(SqList L)
{
int i;
ElemType *e; //这里定义了局部变量
for(i=0;i<L.length;i++)
{
if(i%2!=0)
{
*e=L.elem; //这里是对局部变量赋值
}
}
} //函数结束时,局部变量e被系统回收
//出了函数以后函数里的e已经消失了!!! yuxijian2020 发表于 2021-4-13 13:03
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已经消失了!!! 云枭女 发表于 2021-4-13 13:12
Status GetElem2(SqList L)
{
int i;
你的返回值是Status也就是int你这个函数返回的是一个成功与否的状态
不能return e //就按照你的思路来说,函数应该这么改
Status GetElem2(SqList L, ElemType* e)//返回值是成功与否的状态,那么参数就要加一个返回值
{
int i;
//ElemType *e; 这里改为传入参数
for(i=0;i<L.length;i++)
{
if(i%2!=0)
{
*e=L.elem; //这里是对返回值赋值
return OK; //找到值就返回成功
}
}
return Error; //循环结束没有赋值成功则返回错误
}
页:
[1]