补全以下函数://按位查找(寻找第i个位置的元素并返回该结点) LNode* GetElem(LinkList L, int i) { }
时间: 2023-09-26 14:07:04 浏览: 120
一个获取第n个元素节点的js函数
### 回答1:
LNode* GetElem(LinkList L, int i) {
int j = 1;
LNode* p = L->next; // p 指向第一个结点
while (p && j < i) { // p不为空且j<i
p = p->next; // p指向下一个结点
j++;
}
if (!p || j > i) return NULL; // i<1或者大于表长返回NULL
return p;
}
### 回答2:
补全以下函数://按位查找(寻找第i个位置的元素并返回该结点) LNode* GetElem(LinkList L, int i) {
if (L == NULL || i < 1) { // 如果链表为空或者查找位置小于1
return NULL; // 返回NULL表示未找到
}
LNode* p = L; // 使用指针p指向链表的头结点
int count = 1; // 计数器count初始化为1,即指向第一个结点
while (p && count < i) { // 当指针p不为空且count小于i时,循环遍历链表
p = p->next; // 指针p指向下一个结点
count++; // 计数器count加1
}
if (count == i && p) { // 如果找到了第i个位置的结点
return p; // 返回该结点的指针
} else { // 如果未找到
return NULL; // 返回NULL表示未找到
}
}
### 回答3:
补全函数如下:
LNode* GetElem(LinkList L, int i) {
if (i <= 0 || L == NULL) {
return NULL;
}
LNode* p = L->next; // 从头结点的下一个结点开始查找元素
int count = 1; // 计数器,指示当前结点的位置
while (p != NULL && count < i) {
p = p->next;
count++;
}
if (count == i) {
return p;
} else {
return NULL; // 找不到第i个位置的元素,返回NULL
}
}
以上函数首先判断输入的位置i是否合法,即是否大于0且链表不为空。然后从头结点的下一个结点开始遍历链表,使用计数器count记录当前结点的位置,直到找到第i个位置的元素或遍历到链表末尾。最后根据计数器count是否等于i来判断是否找到了元素,找到则返回该结点的指针,找不到则返回NULL。
阅读全文