用c语言写出:取数组中的一个元素函数GetElem( L,i,&e) 初始条件:表L已存在,1≤i≤ListLength(L)。 操作结果:用e返回L中第i个数据元素的值。
时间: 2024-05-14 20:13:57 浏览: 10
elem),其中L为数组名,i为元素下标,elem为返回的元素值。
```c
#include <stdio.h>
int GetElem(int L[], int i, int *elem) {
if (i < 0 || i >= sizeof(L)/sizeof(int)) {
return 0; // 下标越界
}
*elem = L[i];
return 1; // 取值成功
}
int main() {
int a[] = {1, 2, 3, 4, 5};
int i, elem;
printf("请输入要取的元素下标:");
scanf("%d", &i);
if (GetElem(a, i, &elem)) {
printf("第%d个元素的值为%d\n", i, elem);
} else {
printf("下标越界,请输入有效下标\n");
}
return 0;
}
```
相关问题
GetElem(La,i,e)C语言函数实现
GetElem 函数用于获取线性表 La 中第 i 个元素的值,并将其存储到变量 e 中。下面是一个可能的 C 语言实现:
```
typedef struct {
int data[MAXSIZE];
int length;
} list;
int GetElem(list La, int i, int* e) {
if (i < 1 || i > La.length) {
return 0; // i 超出范围,返回失败
}
*e = La.data[i-1];
return 1; // 获取成功,返回 1
}
```
在这个实现中,我们首先判断 i 是否越界,如果越界则返回失败;否则将第 i 个元素的值存储到变量 e 中,并返回获取成功。需要注意的是,由于 C 语言中函数参数是值传递,因此我们需要使用指针类型的参数 e 来传递元素的值,保证在函数外部能够正确地获取到元素的值。
使用示例:
```
list La;
int e;
// 初始化 La 线性表
// ...
if (GetElem(La, 3, &e)) {
printf("La 中第 3 个元素的值为 %d\n", e);
} else {
printf("获取元素失败\n");
}
```
用C语言编写一个顺序表(能实现基本操作且带注释)
好的,这是一个编写顺序表的示例代码,仅供参考:
```c
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 50
typedef int ElementType;
typedef struct {
ElementType data[MaxSize];
int length;
} SeqList;
// 初始化
void InitList(SeqList *L) {
L->length = 0;
}
// 判断是否为空表
int ListEmpty(SeqList L) {
return L.length == 0;
}
// 获取表长
int ListLength(SeqList L) {
return L.length;
}
// 获取指定位置的元素
int GetElem(SeqList L, int pos, ElementType *e) {
if (pos < 1 || pos > L.length)
return 0;
else {
*e = L.data[pos - 1];
return 1;
}
}
// 查找元素的位置
int LocateElem(SeqList L, ElementType e) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == e)
return i + 1;
}
return 0;
}
// 插入元素
int ListInsert(SeqList *L, int pos, ElementType e) {
if (L->length == MaxSize || pos < 1 || pos > L->length + 1)
return 0;
for (int i = L->length - 1; i >= pos - 1; i--) {
L->data[i + 1] = L->data[i];
}
L->data[pos - 1] = e;
L->length++;
return 1;
}
// 删除指定位置的元素
int ListDelete(SeqList *L, int pos, ElementType *e) {
if (pos < 1 || pos > L->length)
return 0;
*e = L->data[pos - 1];
for (int i = pos; i < L->length; i++) {
L->data[i - 1] = L->data[i];
}
L->length--;
return 1;
}
// 打印顺序表
void PrintList(SeqList L) {
printf("SeqList: ");
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SeqList L;
ElementType e;
InitList(&L);
for (int i = 1; i <= 10; i++) {
ListInsert(&L, i, i);
}
PrintList(L);
ListDelete(&L, 5, &e);
PrintList(L);
GetElem(L, 3, &e);
printf("The element at position 3 is %d\n", e);
printf("The position of element 8 is %d\n", LocateElem(L, 8));
return 0;
}
```
这份代码实现了顺序表的基本操作,包括初始化、判断是否为空表、获取表长、获取指定位置的元素、查找元素的位置、插入元素、删除元素和打印列表。在使用时可以根据需要调用相应的函数。