数据结构获取第i个元素c语言
时间: 2023-05-26 07:03:15 浏览: 51
假设给定一个线性表的数组arr和它的长度n,获取第i个元素的代码如下:
```c
#include <stdio.h>
int getElem(int arr[], int n, int i) {
if (i < 1 || i > n) { // 判断i是否越界
printf("Error: Index out of range\n");
return -1; // 返回错误标识符
}
return arr[i - 1]; // 返回第i个元素
}
// 示例
int main() {
int arr[] = {1, 3, 5, 7, 9};
int n = 5;
int i = 3;
int elem = getElem(arr, n, i);
if (elem != -1) {
printf("The %dth element is %d\n", i, elem);
}
return 0;
}
```
上述代码中,getElem函数接受三个参数:一个数组arr,它的长度n,以及要获取的元素下标i。
在函数内部,首先判断i是否越界,即i是否小于1或大于n。如果越界,则打印错误信息并返回-1;否则,返回第i个元素,注意数组下标从0开始,因此要返回arr[i-1]。
最后,示例代码输出第3个元素的值为5。
相关问题
数据结构c语言顺序表根据位置获取元素的代码
以下是根据位置获取元素的代码:
```
#include <stdio.h>
#define MAXSIZE 100 // 定义顺序表的最大长度
typedef struct {
int data[MAXSIZE]; // 存储元素的数组
int length; // 当前顺序表的长度
} SqList;
// 根据位置获取元素
int getElem(SqList L, int i) {
if (i < 1 || i > L.length) {
printf("非法位置\n");
return -1;
}
return L.data[i-1];
}
int main() {
SqList L;
L.length = 5;
L.data[0] = 1;
L.data[1] = 2;
L.data[2] = 3;
L.data[3] = 4;
L.data[4] = 5;
int elem = getElem(L, 3);
printf("第3个元素是:%d\n", elem);
return 0;
}
```
以上代码是一个简单的顺序表实现,其中 `getElem` 函数可以根据位置获取元素。
数据结构顺序表的基本操作c语言编程
顺序表是一种线性表,它是用一组连续的存储单元来存储线性表的数据元素的。
常见的顺序表基本操作有:
1. 初始化操作
```c
void InitList(SqList *L)
{
L->length = 0;
}
```
2. 插入操作
```c
int ListInsert(SqList *L, int i, ElemType e)
{
int j;
if (i < 1 || i > L->length + 1) {
return ERROR;
}
if (L->length >= MAXSIZE) {
return ERROR;
}
for (j = L->length; j >= i; j--) {
L->data[j] = L->data[j-1];
}
L->data[i-1] = e;
L->length++;
return OK;
}
```
3. 删除操作
```c
int ListDelete(SqList *L, int i, ElemType *e)
{
int j;
if (i < 1 || i > L->length) {
return ERROR;
}
*e = L->data[i-1];
for (j = i; j < L->length; j++) {
L->data[j-1] = L->data[j];
}
L->length--;
return OK;
}
```
4. 查找操作
```c
int LocateElem(SqList L, ElemType e)
{
int i;
for (i = 0; i < L.length; i++) {
if (L.data[i] == e) {
return i+1;
}
}
return 0;
}
```
5. 获取表长
```c
int ListLength(SqList L)
{
return L.length;
}
```
需要注意的是,这里的 `MAXSIZE` 是预定义的顺序表最大长度。`ElemType` 可以根据实际需要进行定义。
完整的代码如下:
```c
#define MAXSIZE 100
typedef int ElemType;
typedef struct {
ElemType data[MAXSIZE];
int length;
} SqList;
void InitList(SqList *L)
{
L->length = 0;
}
int ListInsert(SqList *L, int i, ElemType e)
{
int j;
if (i < 1 || i > L->length + 1) {
return ERROR;
}
if (L->length >= MAXSIZE) {
return ERROR;
}
for (j = L->length; j >= i; j--) {
L->data[j] = L->data[j-1];
}
L->data[i-1] = e;
L->length++;
return OK;
}
int ListDelete(SqList *L, int i, ElemType *e)
{
int j;
if (i < 1 || i > L->length) {
return ERROR;
}
*e = L->data[i-1];
for (j = i; j < L->length; j++) {
L->data[j-1] = L->data[j];
}
L->length--;
return OK;
}
int LocateElem(SqList L, ElemType e)
{
int i;
for (i = 0; i < L.length; i++) {
if (L.data[i] == e) {
return i+1;
}
}
return 0;
}
int ListLength(SqList L)
{
return L.length;
}
```