用模板和头插法建立一个长度为10的带头结点的单链表,值任意;然后遍历此单链表,将10个元素的值在屏幕上输出。(简化起见,假设数据元素类型为int类型) 实现按位查找,并输出结果。
时间: 2024-09-19 16:04:47 浏览: 42
c代码-不带头结点单链表创建——头插法
首先,我们使用模板(template)和头插法来创建一个长度为10的带头结点的单链表。在这个例子中,我们将使用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); // 头节点,值为0
ListNode* current = head; // 当前节点指针
for (int i = 1; i <= size; ++i) {
ListNode* newNode = new ListNode(i); // 新节点,值为i
current->next = newNode; // 将新节点连接到当前节点之后
current = newNode; // 更新当前节点为新节点
}
return head;
}
// 遍历链表并打印节点值
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != nullptr) {
std::cout << temp->val << " ";
temp = temp->next;
}
std::cout << std::endl;
}
int main() {
int size = 10;
ListNode* listHead = createLinkedList(size);
printList(listHead);
// 按位查找示例,这里仅作为辅助功能演示
int targetValue = 5; // 搜索的目标值
bool found = false;
for (ListNode* node = listHead; node != nullptr; node = node->next) {
if ((node->val & targetValue) == targetValue) { // 如果节点值的二进制表示中有目标值对应的位,则视为找到
found = true;
break;
}
}
if (found) {
std::cout << "找到了,值为:" << targetValue << std::endl;
} else {
std::cout << "未找到" << std::endl;
}
delete listHead; // 清理链表内存
return 0;
}
```
在这个程序中,`createLinkedList` 函数用于生成链表,`printList` 函数用于遍历并打印链表元素。按位查找部分展示了如何检查链表中的每个元素是否在特定位置上具有指定的值。
阅读全文