用c语言编写一段代码修改线性表第i个数据元素: 将线性表的第 i 个数据元素的值修改为 x。该操作函数具体定义如下: void SL_SetAt(SeqList* slist, int i, T x)
时间: 2024-10-10 12:14:59 浏览: 40
C与数据结构-第13次课(2)--顺序线性表的定义、创建和输出 定义线性表节点的结构.ppt
在C语言中,你可以通过遍历线性表并更新相应的元素来实现这个功能。假设`SeqList`是一个链表结构,每个节点包含数据`T`和指向下一个节点的指针。这里我们提供了一个简单的实现:
```c
// 首先,假设SeqList结构如下:
typedef struct Node {
T data; // 数据域
struct Node* next; // 指向下一个节点的指针
} Node;
typedef struct SeqList {
Node* head;
int size; // 存储列表长度
} SeqList;
// 函数声明
void SL_SetAt(SeqList* slist, int i, T x);
// 实现SL_SetAt函数
void SL_SetAt(SeqList* slist, int i, T x) {
if (slist == NULL || i < 0 || i >= slist->size) {
printf("Invalid index or empty list.\n");
return;
}
// 找到第i个节点
Node* current = slist->head;
for (int j = 0; j < i; j++) {
if (current == NULL) {
printf("Index out of range.\n");
return;
}
current = current->next;
}
// 修改找到的节点的数据
current->data = x;
}
```
在这个函数里,首先检查输入的有效性。如果索引无效(越界或空列表),则返回错误信息。然后通过循环找到第`i`个节点,并将它的数据域设置为`x`。
阅读全文