1. 其它 完成以下头指针为L的单链表的设计与实现,要求完成单链表的初始化、头插或尾插法的创建、单链表所有数据元素显示与输出、并且在单链表查找值'F'的数据是否存在。同时编写主函数运行实现相应功能。
时间: 2024-10-19 21:09:23 浏览: 29
c++头插法和尾插法创建、删除、遍历单链表.zip
在C++中,我们可以使用结构体表示节点,并通过指针连接形成单链表。这里是一个简单的单链表设计与实现,包括基本操作:
```cpp
#include <iostream>
// 定义链表节点结构体
struct Node {
int data; // 数据域
Node* next; // 指向下一个节点的指针
};
// 初始化一个空链表
Node* createEmptyList() {
return new Node{0, nullptr};
}
// 首部插入节点
void insertAtBegin(Node** head, int value) {
Node* newNode = new Node{value, *head};
if (*head != nullptr)
(*head)->next = newNode;
else
*head = newNode;
}
// 尾部插入节点
void insertAtEnd(Node** head, int value) {
Node* newNode = new Node{value, nullptr};
if (*head == nullptr)
*head = newNode;
else {
Node* current = *head;
while (current->next != nullptr)
current = current->next;
current->next = newNode;
}
}
// 打印链表中的所有元素
void displayList(Node* head) {
Node* temp = head;
while (temp != nullptr) {
std::cout << temp->data << " ";
temp = temp->next;
}
std::cout << "\n";
}
// 查找值'F'
bool searchForValue(Node* head, int value) {
Node* current = head;
while (current != nullptr) {
if (current->data == value)
return true;
current = current->next;
}
return false;
}
int main() {
// 示例:
Node* listHead = createEmptyList();
insertAtBegin(&listHead, 5);
insertAtBegin(&listHead, 3);
insertAtEnd(&listHead, 8);
displayList(listHead); // 输出: 3 5 8
// 查找 'F' 是否存在
if (searchForValue(listHead, 4)) {
std::cout << "Value 4 found.\n";
} else {
std::cout << "Value 4 not found.\n";
}
// 清理内存
Node* temp = listHead;
while (temp != nullptr) {
Node* nextTemp = temp->next;
delete temp;
temp = nextTemp;
}
return 0;
}
```
这个示例实现了链表的基本操作以及查找特定值的功能。请注意,你需要根据实际需求修改和扩展此代码。在这个例子中,`main()` 函数展示了如何使用这些操作。
阅读全文