编写完整的C++语言程序完成下列实验任务: 自学头插法建立单链表 首先用头插法建立一个长度为10的带头结点的单链表,值任意;然后遍历此单链表,将10个元素的值在屏幕上输出。(简化起见,假设数据元素类型为int类型) 实现按位查找,并输出结果。
时间: 2024-09-20 19:02:40 浏览: 24
在C++中,你可以按照以下步骤编写一个简单的程序来完成这个任务:
```cpp
#include <iostream>
// 定义单链表节点结构体
struct ListNode {
int val; // 数据域
ListNode* next; // 指向下一个节点的指针
ListNode(int x) : val(x), next(nullptr) {} // 构造函数
};
// 创建链表函数
ListNode* createLinkedList(int size) {
ListNode* head = new ListNode(0); // 创建头节点
for (int i = 1; i <= size; ++i) {
ListNode* newNode = new ListNode(i);
head->next = newNode;
head = newNode; // 更新头节点为新插入的节点
}
return head;
}
// 遍历并打印链表
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != nullptr) {
std::cout << temp->val << " ";
temp = temp->next;
}
std::cout << "\n";
}
// 按位查找函数,这里仅示例如何获取元素,实际上需要用户输入查询位置
bool bitSearch(ListNode* head, int position) {
if (position < 0 || !head) {
return false;
}
ListNode* current = head;
while (current != nullptr && position > 0) {
if (current->val & (1 << (position - 1))) { // 判断当前位是否设置
return true;
}
position--;
current = current->next;
}
return false;
}
int main() {
int listSize = 10;
ListNode* myList = createLinkedList(listSize);
std::cout << "单链表的元素是:\n";
printList(myList);
int searchPosition = 5; // 示例性的查询位置
bool found = bitSearch(myList, searchPosition);
std::cout << "在第" << searchPosition << "位查找的结果是: " << (found ? "找到" : "未找到") << "\n";
// 清理内存
while (myList != nullptr) {
ListNode* temp = myList;
myList = myList->next;
delete temp;
}
return 0;
}
```
这个程序首先创建了一个长度为10的链表,然后遍历并打印链表的内容。`bitSearch`函数用于按位查找给定位置的元素,但在实际应用中,你需要提示用户输入查询位置。最后记得清理动态分配的内存。