编写完整的C++语言程序完成下列实验任务: 自学头插法建立单链表 首先用头插法建立一个长度为10的带头结点的单链表,值任意;然后遍历此单链表,将10个元素的值在屏幕上输出。(简化起见,假设数据元素类型为int类型) 实现按位查找,并输出结果
时间: 2024-09-26 10:11:05 浏览: 48
在C++中,你可以按照以下步骤编写一个简单的程序来完成这个任务:
首先,我们需要定义一个节点结构体(Node),以及单链表的头指针(Head)。接着,我们创建一个函数`initList()`用于初始化一个长度为10的链表,填充一些随机整数。再创建一个遍历链表的函数`printList()`用于输出链表的所有元素。最后,我们实现一个按位查找的辅助函数`findBitPosition(int num, int bit)`,这个函数接收一个整数和一位,返回该位是否为1的位置。
```cpp
#include <iostream>
#include <cstdlib>
#include <ctime>
// 定义节点结构体
struct Node {
int data;
Node* next;
};
// 初始化一个长度为10的链表
Node* initList() {
Node* head = new Node(); // 创建头节点
head->data = 0; // 初始化头节点的数据
srand(time(0)); // 设置随机数种子
for (size_t i = 1; i < 10; ++i) {
Node* newNode = new Node();
newNode->data = rand() % 100; // 随机生成0到99之间的整数
newNode->next = head->next;
head->next = newNode;
}
return head;
}
// 打印链表中的所有元素
void printList(Node* head) {
Node* current = head;
while (current != nullptr) {
std::cout << current->data << " ";
current = current->next;
}
std::cout << std::endl;
}
// 按位查找功能
size_t findBitPosition(int num, int bit) {
size_t position = 0;
while (num > 0) {
if ((num & (1 << bit)) != 0) {
return position + bit;
}
++position;
num >>= 1;
}
return -1; // 如果位不是1,则返回-1表示未找到
}
int main() {
Node* listHead = initList();
std::cout << "链表元素: ";
printList(listHead);
int targetNum = 42;
int targetBit = 2; // 示例:查找数字42的第3位(从0开始计数)
size_t result = findBitPosition(targetNum, targetBit);
if (result != -1) {
std::cout << "在第" << result << "位置找到了" << (targetNum >> result) & 1 << std::endl;
} else {
std::cout << "位" << targetBit << "上没有找到1" << std::endl;
}
delete listHead; // 清理内存
return 0;
}
```
运行这个程序,它会打印出链表的10个元素并检查指定数字的某一位是否为1。如果你需要帮助或有其他问题,请告诉我。
阅读全文
相关推荐


















