在 struct Node* head = (struct Node*)malloc(sizeof(struct)); 这一行中,你忘记了指定要分配内存的结构体类型,应该写成 struct Node* head = (struct Node*)malloc(sizeof(struct Node));。
也就是说,你需要将 sizeof(struct) 改为 sizeof(struct Node)。这样就能够成功分配足够的内存来存储一个 struct Node 类型的节点,并将其赋值给 head 指针。
修改后的代码如下:
#include <stdio.h>
#include <stdlib.h>
// 定义链表结构
struct Node {
int data;
struct Node* next;
};
// 查找链表中第 i 个元素的函数
void findElement(struct Node* head, int i) {
struct Node* current = head->next;
int index = 1;
while (current != NULL && index < i) {
current = current->next;
index++;
}
if (current == NULL || index != i) {
printf("不存在该元素\n");
} else {
printf("第 %d 个元素的值为 %d\n", i, current->data);
}
}
int main() {
struct Node* head = (struct Node*)malloc(sizeof(struct Node));
head->next = NULL;
// 在链表中插入一些元素,这里假设有5个元素
for (int i = 1; i <= 5; i++) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = i*10; // 假设元素值是10的倍数
newNode->next = head->next;
head->next = newNode;
}
// 要查找的位置
int i;
printf("请输入要查找的位置(1 ≤ i ≤ 5):");
scanf("%d", &i);
// 调用查找函数
findElement(head, i);
// 释放链表节点的内存
struct Node* current = head->next;
while (current != NULL) {
struct Node* temp = current;
current = current->next;
free(temp);
}
free(head);
return 0;
}
希望能够解决你的问题!
如果问题已经解决,请设置最佳答案 |