)L为带头结点的单链表的头指针。当第i个元素存在时,返回其值,若这样的数据元素不存在,则给出相应的提示,其基本操作为GetLinkListElem(LinkList *L)。
时间: 2024-03-27 13:35:20 浏览: 17
以下是一个基于C语言的实现,用于获取带头结点的单链表中的第 i 个元素的值。如果该元素不存在,则输出提示信息并返回0。
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode {
int data;
struct LNode *next;
} LinkList;
int GetLinkListElem(LinkList *L, int i) {
int j = 0;
LinkList *p = L->next; // p指向链表第一个结点
while (p && j < i) { // 遍历链表,直到找到第i个结点或到达链表末尾
p = p->next;
j++;
}
if (!p || j > i) { // 找不到第i个结点,或者 i 的值不合法
printf("第 %d 个元素不存在!\n", i);
return 0;
} else {
return p->data;
}
}
```
使用示例:
```c
int main() {
LinkList *L = (LinkList *)malloc(sizeof(LinkList)); // 建立带头结点的单链表
L->next = NULL;
LinkList *p = L;
for (int i = 1; i <= 5; i++) { // 插入5个结点
LinkList *newNode = (LinkList *)malloc(sizeof(LinkList));
newNode->data = i;
newNode->next = NULL;
p->next = newNode;
p = newNode;
}
printf("%d\n", GetLinkListElem(L, 3)); // 输出第3个结点的值
printf("%d\n", GetLinkListElem(L, 6)); // 输出不存在的第6个结点,返回0并输出提示信息
return 0;
}
```
输出结果:
```
3
第 6 个元素不存在!
0
```