(2)取表中的一个元素函数GetElem( L,i,&e) 初始条件:表L已存在,1≤i≤ListLength(L)。 操作结果:用e返回L中第i个数据元素的值。。请帮我写出原函数
时间: 2023-08-31 17:33:57 浏览: 89
### 回答1:
e)
函数说明:从线性表L中取第i个元素,并将其赋值给e。
函数参数:
L:线性表L。
i:要取的元素的位置,取值范围为1≤i≤ListLength(L)。
e:用于存储取出的元素。
函数返回值:
函数执行成功返回OK,否则返回ERROR。
函数实现:
Status GetElem(SqList L, int i, ElemType *e)
{
if (i < 1 || i > L.length) // 判断i是否合法
{
return ERROR;
}
*e = L.data[i-1]; // 将第i个元素赋值给e
return OK;
}
### 回答2:
要定义一个函数GetElem(L,i),该函数的功能是从表L中取出第i个元素并返回。
首先,我们需要判断输入的i是否合法,即i必须大于等于1且小于等于表L的长度。
接下来,我们可以使用指针p指向表L的头结点,并设置一个计数器count来记录遍历的元素个数。然后,我们通过循环遍历表L,将指针p向后移动到第i个元素处。
具体步骤如下:
1. 判断i的取值范围是否合法,如果不合法则返回错误提示。
2. 初始化指针p为表L的头结点,计数器count为1。
3. 判断count是否等于i,如果相等则返回指针p指向的元素。
4. 否则,将指针p向后移动一个结点,计数器count加1。
5. 重复步骤4,直到count等于i为止。
6. 如果循环结束后仍然没有找到第i个元素,则返回错误提示。
最后,我们可以编写一个完整的函数来实现GetElem(L,i):
```
ElementType GetElem(LinkList L, int i){
if(i<1 || i>ListLength(L)){
printf("i的取值范围不合法\n");
exit(ERROR);
}
LinkList p =L->next;
int count = 1;
while(p && count < i){
p = p->next;
count++;
}
if(!p){
printf("第i个元素不存在\n");
exit(ERROR);
}
return p->data;
}
```
其中,LinkList是指向表L的指针,ElementType是表L中元素的数据类型。
这样,我们就定义了一个名为GetElem的函数,它可以从表L中取出第i个元素并返回。
### 回答3:
函数GetElem(L, i, j)的功能是取表L中第i行第j列的元素。
首先,我们需要判断输入的i和j是否合法。表L的行号和列号都是从1开始的,所以i和j都必须大于等于1。如果i或j小于1,说明输入的位置不合法,我们应该返回一个错误提示。
若i和j都合法,我们可以通过以下步骤找到表L中第i行第j列的元素:
1. 定义一个变量row,把i减去1,并用这个结果更新row的值。row表示需要寻找的行数。
2. 定义一个变量column,把j减去1,并用这个结果更新column的值。column表示需要寻找的列数。
3. 判断row是否大于等于表L的行数,或column是否大于等于表L的列数。如果是,说明要找的元素超出了表L的大小范围,我们应该返回一个错误提示。
4. 如果row和column都在表L的大小范围内,我们可以直接访问表L的第row行的第column列,并返回该元素。
这样,我们就完成了函数GetElem(L, i, j)的功能。 当我们调用这个函数并传入合适的参数时,它将返回表L中指定位置的元素。如果参数不合法,它将返回一个错误提示。
注意:这里假设表L是一个二维表,获取元素的操作不会改变表L的内容。
阅读全文