c语言单链表输入输出查找第i个元素主函数代码
时间: 2023-05-30 15:05:13 浏览: 115
下面是一个简单的单链表输入、输出和查找第i个元素的主函数代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点
struct Node {
int data;
struct Node *next;
};
// 创建一个新节点
struct Node* newNode(int data) {
struct Node *node = (struct Node*)malloc(sizeof(struct Node));
node->data = data;
node->next = NULL;
return node;
}
// 在链表末尾添加一个节点
struct Node* appendNode(struct Node *head, int data) {
struct Node *node = newNode(data);
if (head == NULL) {
head = node;
} else {
struct Node *current = head;
while (current->next != NULL) {
current = current->next;
}
current->next = node;
}
return head;
}
// 输出链表中的所有元素
void printList(struct Node *head) {
struct Node *current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
// 查找链表中的第i个元素
struct Node* findNode(struct Node *head, int i) {
struct Node *current = head;
int j = 1;
while (current != NULL && j < i) {
current = current->next;
j++;
}
if (current == NULL || j > i) {
return NULL;
} else {
return current;
}
}
int main() {
struct Node *head = NULL;
// 输入数据,创建链表
int n;
printf("请输入节点个数:");
scanf("%d", &n);
printf("请输入节点数据:");
for (int i = 0; i < n; i++) {
int data;
scanf("%d", &data);
head = appendNode(head, data);
}
// 输出链表
printf("链表中的元素:");
printList(head);
// 查找第i个元素
int i;
printf("请输入要查找的元素位置:");
scanf("%d", &i);
struct Node *node = findNode(head, i);
if (node == NULL) {
printf("不存在第%d个元素\n", i);
} else {
printf("第%d个元素的值为%d\n", i, node->data);
}
return 0;
}
```
在上面的代码中,我们定义了一个 `Node` 结构体来表示链表节点,并实现了创建节点、在链表末尾添加节点、输出链表中的所有元素以及查找链表中的第i个元素等函数。在 `main` 函数中,我们首先让用户输入节点个数和节点数据,然后创建链表并输出链表中的所有元素。接着,让用户输入要查找的元素位置,调用 `findNode` 函数查找并输出该元素的值。
阅读全文