完成以下头指针为L的单链表的设计与实现,要求完成单链表的初始化、头插的创建、单链表所有数据元素显示与输出、并且在单链表查找值'F'的数据是否存在。同时编写主函数运行实现相应功能。用c语言写
时间: 2024-10-19 09:09:24 浏览: 20
在C语言中,我们可以设计一个简单的单链表结构,包含节点数据域`data`和指向下一个节点的指针`next`。这里是一个基础的链表结构体定义:
```c
#include <stdio.h>
#include <stdlib.h>
// 链表节点定义
typedef struct ListNode {
int data;
struct ListNode* next;
} ListNode;
// 初始化链表函数
ListNode* createList() {
ListNode* head = NULL; // 初始化链表为空
return head;
}
// 创建头插法插入节点的函数
void insertAtHead(ListNode** head, int value) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
if (newNode != NULL) {
newNode->data = value;
newNode->next = *head;
*head = newNode;
} else {
printf("Memory allocation failed.\n");
}
}
// 显示链表所有节点的功能
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
// 查找值'F'是否存在的函数
int findValue(ListNode* head, int value) {
ListNode* current = head;
while (current != NULL) {
if (current->data == value) {
return 1; // 如果找到返回1,表示存在
}
current = current->next;
}
return 0; // 没有找到则返回0,表示不存在
}
// 主函数示例
int main() {
// 初始化链表
ListNode* list = createList();
// 插入节点
insertAtHead(&list, 5); // 插入数字5到头部
insertAtHead(&list, 10); // 插入数字10到头部
// 输出链表
printList(list);
// 查找值
int found = findValue(list, 10); // 查找10是否存在
if (found) {
printf("Value '10' is present in the list.\n");
} else {
printf("Value '10' not found in the list.\n");
}
// 清理内存
ListNode* node = list;
while (node != NULL) {
ListNode* temp = node;
node = node->next;
free(temp);
}
return 0;
}
```
以上代码展示了如何使用头指针实现单链表的基本操作,包括初始化、头插、打印链表以及查找特定值。记得在程序结束时释放动态分配的内存以避免内存泄漏。
阅读全文