C语言实现在已经创建完的单链表中查找第i个元素,如果查找成功,则显示该元素的值,否则显示该元素不存在。
时间: 2024-05-07 11:23:27 浏览: 6
可以按照以下步骤实现:
1. 定义单链表节点的结构体,包括数据域和指向下一节点的指针域。
2. 创建单链表并初始化。
3. 定义一个函数,输入参数为单链表头指针和要查找的元素位置i,输出为该元素的值或不存在。
4. 在函数中遍历单链表,找到第i个元素并返回其值,如果不存在则输出不存在。
下面是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义单链表节点结构体
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
// 创建单链表
ListNode* createList(int n) {
ListNode *head = NULL, *p = NULL;
for (int i = 1; i <= n; i++) {
ListNode *node = (ListNode*)malloc(sizeof(ListNode));
node->val = i;
node->next = NULL;
if (head == NULL) {
head = node;
p = head;
} else {
p->next = node;
p = p->next;
}
}
return head;
}
// 查找单链表中第i个元素
void findNode(ListNode *head, int i) {
int cnt = 1;
ListNode *p = head;
while (p != NULL && cnt < i) {
p = p->next;
cnt++;
}
if (p == NULL) {
printf("该元素不存在\n");
} else {
printf("第%d个元素的值为%d\n", i, p->val);
}
}
int main() {
int n = 10;
ListNode *head = createList(n);
int i = 5;
findNode(head, i);
return 0;
}
```
在上述代码中,我们首先定义了单链表节点的结构体。然后通过`createList`函数创建了一个包含10个元素的单链表。最后,我们调用`findNode`函数查找第5个元素并输出结果。