创建单链表,并遍历单链表,输出所有奇数序号结点数据
时间: 2024-03-13 14:44:59 浏览: 71
单链表的遍历(逆序打印)-单链表递归
好的,以下是创建单链表并遍历输出所有奇数序号结点数据的代码实现:
```c++
#include <iostream>
using namespace std;
// 定义单链表结构体
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
// 创建单链表
ListNode* createLinkedList() {
int n; // 链表节点个数
cout << "请输入链表节点个数: ";
cin >> n;
ListNode* head = new ListNode(-1); // 创建头节点
ListNode* curr = head;
for (int i = 0; i < n; i++) {
int data;
cout << "请输入第" << i+1 << "个节点的值: ";
cin >> data;
ListNode* node = new ListNode(data); // 创建新节点
curr->next = node; // 将新节点插入链表尾部
curr = node;
}
return head; // 返回头节点
}
// 遍历单链表,输出所有奇数序号结点数据
void printOddNodes(ListNode* head) {
ListNode* curr = head->next;
int count = 1;
while (curr != nullptr) {
if (count % 2 == 1) {
cout << curr->val << " ";
}
curr = curr->next;
count++;
}
}
int main() {
// 创建单链表
ListNode* head = createLinkedList();
// 遍历单链表,输出所有奇数序号结点数据
cout << "所有奇数序号结点数据为: ";
printOddNodes(head);
cout << endl;
return 0;
}
```
该程序首先通过 `createLinkedList` 函数创建单链表,并返回头节点。然后调用 `printOddNodes` 函数遍历单链表,输出所有奇数序号结点的数据。注意,这里的头节点是没有数据的,实际上单链表的第一个节点是头节点的下一个节点。
阅读全文