int GetElem(LinkList L,int i,ElemType &e) { // L为带头结点的单链表的头指针。当第i个元素存在时,其值赋给e并返回1,否则返回0
时间: 2023-06-19 17:03:50 浏览: 278
带头结点的单链表,反转并输出
这是一个获取带头结点单链表中第i个元素的函数,函数原型如下:
```
int GetElem(LinkList L, int i, ElemType &e);
```
其中,`L`为带头结点单链表的头指针,`i`为需要获取元素的位置,`e`为获取到的元素值。
函数的返回值为`int`类型,如果第`i`个元素存在,其值赋给`e`并返回1,否则返回0。
函数的具体实现如下:
```c++
int GetElem(LinkList L, int i, ElemType &e) {
if (i < 1) return 0; // i小于1,无法获取元素,返回0
LNode *p = L->next;
int j = 1;
while (p && j < i) { // 从头结点后的第一个结点开始遍历链表,直到找到第i个结点,或者链表遍历完毕
p = p->next;
j++;
}
if (!p || j > i) return 0; // 链表遍历完毕,仍未找到第i个结点,返回0
e = p->data;
return 1; // 找到第i个结点,将其值赋给e,并返回1
}
```
注:该函数的时间复杂度为$O(n)$,其中$n$为链表的长度。
阅读全文