GetElem(L,i,e)与GetElem(L,i,&e)一样吗

请各位帮忙解释一下在这两个函数中&e和e的区别

不同。

1、范围不同:GetElem(L,i,e)函数中的e值不会影响函数外部的值。它相当于将其复制到e。GetElem(L,i,&e)改变了e本身的价值。

2、关系不同:线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储),但是把最后一个数据元素的尾指针指向了首位结点)。

扩展资料

GetElem(L,i,e)特征

1.集合中必存在唯一的一个“第一元素”。

2.集合中必存在唯一的一个 “最后元素” 。

3.除最后一个元素之外,均有唯一的后继(后件)。

4.除第一个元素之外,均有唯一的前驱(前件)。

参考资料来源:百度百科-线性表

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-08-28

不一样,里边的E值用法不同。

1 #include"defs.h"2 3 int GetElem(linklist L, int i, int *e) 4 { 5 linklist p = L; 6 int j = 0;

7 if (i<1 || i>ListLength(L)) 8 exit(0); 

9 10 while (j11 {12 ++j;13 p = p->next;14 }15 *e = p->data;16 }

扩展资料

例如:

#include<iostream>

using namespace std;

len= Length sizeof(L)/sizeof(int)

int L[] = { 1, 2, 3, 4, 6, 6, 7, 8, 9 };

int GetElem(int L[], int i, int &e)

{

if (len == 0 || i<1 || i>len);

e=L[i-1];

return 1;

}

int main()

{

int e=0;

GetElem(L,5,e);

cout << e << endl;

return 0;

}

//线性表返回特定值

本回答被网友采纳
第2个回答  2019-08-28

一样。表示La是一个引用,对La的操作等效于对实参的操作。一般使用引用是因为实参不可复制,或者需要在函数内修改实参的值。

代码里有“类似”这样的一个语句:typedef int Status; /*类型名定义用status代替int*/。

Status GetElem_L(LinkList L,int i,ElemType &e)。int Status GetElem_L(LinkList L,int i,ElemType &e) ,Status只是int的替身。

至于那个&e,就是这个函数的第三个参数,意思是传入的是第三个参数的地址,&是取地址符号,e只是个形式参数,可以换成任何其他的标识符。

main(
{
LinkList list;
int i = 5;
ElemType a = 8; //假设前面typedef int ElemType

GetElem_L(list, i, a);
//如果在GetElem_L函数里面改变了list 和 i , a 的值,当这个函数执行完了之后,list ,i 的值不会改变。

//而a 的值会改变。

扩展资料:

常用库函数有:

scanf格式输入函数

printf格式输出函数

systemdos命令函数

sort排序

main主函数

fgets文件读取字符串函数

fputs文件写入字符串函数

fscanf文件格式读取函数

fprintf文件格式写入函数

fopen打开文件函数

getchar输入字符函数

putchar输出字符函数

malloc动态申请内存函数

free释放内存函数

abs求绝对值数学函数

sqrt求平方根数学函数

参考资料来源:百度百科-函数

本回答被网友采纳
第3个回答  推荐于2017-12-16
这是引用 在GetElem(L,i,e)函数内 e 值的变化不影响函数外的值 相当于复制一下给e 不影响原来的
而GetElem(L,i,&e)就是把e 的本身值改变了追问

可我还是有点不太明白,什么叫函数内的e值变化不影响函数外的值

追答

火影看过吧? 分身知道吧? GetElem(L,i,e)中的e就是分身 他不管怎么变,
都只是在GetElem(L,i,e)这个函数内变换 而函数外的值还是不变的

eg:
int e=10;
GetElem(L,i,e)
{
e=100;
..........
}

cout<<e; //这里的e还是10

追问

那样的话,岂不是这个函数没用吗?因为L中的i元素的值最后没有输出啊,那在数据结构中 用GetElem这个函数时,究竟是用&还是不用?麻烦帮我解答一下,灰常感谢

追答

是链表里面的函数吗?
Status GetElem(LinkList L, int i, ElemType &e) {
// L是带头结点的链表的头指针,以 e 返回第 i 个元素
LinkList p;int j;
p = L->link; j = 1; // p指向第一个结点,j为计数器
while (p && jlink; ++j; }
// 顺指针向后查找,直到 p 指向第 i 个元素
// 或 p 为空
if ( !p || j>i )
return ERROR; // 第 i 个元素不存在
e = p->data; // 取得第 i 个元素
return OK;
}

这是原函数 你在使用的是后就不管& 直接写 GetElem(L,i,e) 这里的e 就是引用了

追问

真不好意思,我很笨,还是不太懂。什么叫再使用的时候就不管&,是什么意思,而且这个你给的原函数中,e也没有被输出啊,也没取得第i个元素啊?请大侠在帮帮那个忙解答一下吧。

追答

这个函数的意思是返回链表中的第i个元素 将其赋值给e e是传引用,在函数调用前就已经声明了 这个函数的使用是这样的:
int e
GetElem(L,i,e);
cout<<e; //e就是L中第i个元素

本回答被提问者采纳
相似回答