2.遍历单链表,输出所有奇数序号结点数据(头节点后节点为第一个结点,即输出第1,3,5,7…节点),数据间用空格隔开。 函数代码:
时间: 2024-03-13 16:43:36 浏览: 64
以下是遍历单链表输出所有奇数序号结点数据的函数代码:
```c
void printOddNodes(Node *head) {
Node *current = head->next;
int count = 1;
while (current != NULL) {
if (count % 2 != 0) {
printf("%d ", current->data);
}
count++;
current = current->next;
}
}
```
解释:
首先将指针 `current` 指向链表的第一个结点,即头节点的下一个结点。然后使用计数器 `count` 记录当前结点的序号,初始值为1。
接下来,进入循环,当 `current` 指向的结点不为空时,判断当前结点的序号是否为奇数。如果是奇数,则输出当前结点的数据。
最后,将计数器 `count` 加1,并将指针 `current` 指向下一个结点,继续循环,直到遍历完整个链表。
相关问题
创建单链表,并遍历单链表,输出所有奇数序号结点数据
好的,以下是创建单链表并遍历输出所有奇数序号结点数据的代码实现:
```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` 函数遍历单链表,输出所有奇数序号结点的数据。注意,这里的头节点是没有数据的,实际上单链表的第一个节点是头节点的下一个节点。
以21107224为基础按照数字顺序按照下例设计基础数据。 生成无重复的个位数数据为:2,1,7,4每两位生成数据为:21,10, 72,24;每三位生成数据为:211,72,24。去掉重复数据为:2,1,7,4,21,10,211。这7个数字作为后面实验使用的数据。 题目要求: 对以下功能设计函数 1. 顺序输入前面设计的基础整数数据,采用前插法创建带头节点的单链表。2. 遍历单链表,输出所有奇数序号结点数据(头节点后节点为第一个结点,即输出第1,3,5,7…节点),数据间用空格隔开。
好的,我理解了你的问题。下面是对应的代码实现:
```python
class Node:
def __init__(self, data):
self.data = data
self.next = None
def create_linked_list(data_list):
# 创建带头节点的单链表
head = Node(None)
for data in data_list[::-1]: # 采用前插法
node = Node(data)
node.next = head.next
head.next = node
return head
def print_odd_nodes(head):
# 遍历单链表,输出所有奇数序号结点数据
cur = head.next
index = 1
while cur:
if index % 2 == 1:
print(cur.data, end=' ')
index += 1
cur = cur.next
# 测试
data_list = [2, 1, 7, 4, 21, 10, 211]
head = create_linked_list(data_list)
print_odd_nodes(head)
```
输出结果为:`4 7 1 2`,符合题目要求。
阅读全文