不同。
1、范围不同:GetElem(L,i,e)函数中的e值不会影响函数外部的值。它相当于将其复制到e。GetElem(L,i,&e)改变了e本身的价值。
2、关系不同:线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储),但是把最后一个数据元素的尾指针指向了首位结点)。
GetElem(L,i,e)特征
1.集合中必存在唯一的一个“第一元素”。
2.集合中必存在唯一的一个 “最后元素” 。
3.除最后一个元素之外,均有唯一的后继(后件)。
4.除第一个元素之外,均有唯一的前驱(前件)。
参考资料来源:百度百科-线性表
不一样,里边的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;
}
//线性表返回特定值
本回答被网友采纳一样。表示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求平方根数学函数
参考资料来源:百度百科-函数
本回答被网友采纳可我还是有点不太明白,什么叫函数内的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个元素