数据结构c语言顺序表根据位置获取元素的代码
时间: 2023-05-20 13:03:00 浏览: 55
以下是根据位置获取元素的代码:
```
#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语言顺序表
顺序表是一种常见的数据结构,它可以用 C 语言来实现。顺序表是一个一维数组,它的元素按照线性的顺序存储在数组中,而且数组的长度是固定的。下面是一个简单的顺序表的 C 语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 最大长度
typedef struct {
int data[MAX_SIZE]; // 数据
int length; // 当前长度
} SqList;
// 初始化顺序表
void init(SqList *list) {
list->length = 0;
}
// 插入元素
void insert(SqList *list, int index, int value) {
if (index < 0 || index > list->length || list->length >= MAX_SIZE) {
printf("插入位置无效或顺序表已满\n");
return;
}
for (int i = list->length - 1; i >= index; i--) {
list->data[i + 1] = list->data[i];
}
list->data[index] = value;
list->length++;
}
// 删除元素
void remove(SqList *list, int index) {
if (index < 0 || index >= list->length) {
printf("删除位置无效\n");
return;
}
for (int i = index + 1; i < list->length; i++) {
list->data[i - 1] = list->data[i];
}
list->length--;
}
// 获取元素
int get(SqList *list, int index) {
if (index < 0 || index >= list->length) {
printf("获取位置无效\n");
return -1;
}
return list->data[index];
}
// 修改元素
void set(SqList *list, int index, int value) {
if (index < 0 || index >= list->length) {
printf("修改位置无效\n");
return;
}
list->data[index] = value;
}
// 输出顺序表
void print(SqList *list) {
for (int i = 0; i < list->length; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
int main() {
SqList list;
init(&list);
insert(&list, 0, 1);
insert(&list, 1, 3);
insert(&list, 1, 2);
print(&list); // 1 2 3
remove(&list, 1);
print(&list); // 1 3
set(&list, 1, 4);
print(&list); // 1 4
int value = get(&list, 1);
printf("%d\n", value); // 4
return 0;
}
```
在上面的代码中,我们定义了一个 `SqList` 结构体来表示顺序表,包含一个 `data` 数组和一个 `length` 变量。初始化顺序表的方法是将 `length` 设置为 0,插入元素的方法是将插入位置之后的元素依次后移,然后将新元素插入到指定位置;删除元素的方法是将删除位置之后的元素依次前移,然后将顺序表长度减 1;获取元素的方法是返回指定位置的元素;修改元素的方法是将指定位置的元素替换为新的元素。
数据结构顺序表c语言
顺序表是一种线性表,它的物理存储结构是连续的。在 C 语言中,可以用数组来实现顺序表。以下是一个简单的顺序表的 C 语言实现:
```c
#include <stdio.h>
#define MAXSIZE 100 // 定义顺序表的最大长度
typedef struct {
int data[MAXSIZE]; // 存储数据元素的数组
int length; // 当前顺序表的长度
} SeqList;
// 初始化顺序表
void InitList(SeqList *L) {
L->length = 0;
}
// 获取顺序表中指定位置的元素
int GetElem(SeqList L, int i) {
if (i < 1 || i > L.length) {
printf("Error: index out of range.\n");
return -1;
}
return L.data[i-1];
}
// 在顺序表中插入元素
void ListInsert(SeqList *L, int i, int e) {
int j;
if (L->length == MAXSIZE) {
printf("Error: list is full.\n");
return;
}
if (i < 1 || i > L->length+1) {
printf("Error: index out of range.\n");
return;
}
for (j = L->length; j >= i; j--) {
L->data[j] = L->data[j-1];
}
L->data[i-1] = e;
L->length++;
}
// 删除顺序表中指定位置的元素
void ListDelete(SeqList *L, int i) {
int j;
if (i < 1 || i > L->length) {
printf("Error: index out of range.\n");
return;
}
for (j = i; j < L->length; j++) {
L->data[j-1] = L->data[j];
}
L->length--;
}
// 输出顺序表中的元素
void PrintList(SeqList L) {
int i;
for (i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SeqList L;
InitList(&L);
ListInsert(&L, 1, 1);
ListInsert(&L, 2, 2);
ListInsert(&L, 3, 3);
ListInsert(&L, 4, 4);
ListInsert(&L, 5, 5);
PrintList(L);
ListDelete(&L, 3);
PrintList(L);
printf("%d\n", GetElem(L, 2));
return 0;
}
```
在这个例子中,我们定义了一个结构体 `SeqList`,其中包含一个数组 `data` 和一个表示顺序表长度的变量 `length`。然后我们定义了一些操作函数来对顺序表进行初始化、插入、删除、获取元素和输出顺序表的元素。在 `main()` 函数中,我们创建了一个顺序表 `L`,并对它进行了一些操作,最后输出了结果。