入若干个正整数(输入-1 为结束标志)建立一个单向链表,头指针为 h,输出链表中奇数值的结点。试编写相应程序。
时间: 2024-03-07 22:48:20 浏览: 74
好的,我会根据您的要求进行回答。针对您的问题,以下是一个 C++ 的程序示例,可以实现您的要求:
```cpp
#include <iostream>
using namespace std;
struct Node {
int val;
Node* next;
};
int main() {
Node* head = nullptr;
Node* tail = nullptr;
// 循环读入并建立链表
int num;
cout << "请输入若干个正整数,以-1作为结束标志:" << endl;
cin >> num;
while (num != -1) {
Node* newNode = new Node;
newNode->val = num;
newNode->next = nullptr;
if (head == nullptr) {
head = newNode;
tail = newNode;
} else {
tail->next = newNode;
tail = newNode;
}
cin >> num;
}
// 遍历链表,输出奇数
Node* p = head;
cout << "奇数结点的值为:" << endl;
while (p != nullptr) {
if (p->val % 2 == 1) {
cout << p->val << endl;
}
p = p->next;
}
// 释放链表结点的内存
p = head;
while (p != nullptr) {
Node* tmp = p;
p = p->next;
delete tmp;
}
head = nullptr;
tail = nullptr;
return 0;
}
```
上述程序中,我们首先定义了一个结构体 `Node`,表示链表中的一个结点。然后定义了链表的头指针 `head` 和尾指针 `tail`,用来动态地建立链表。程序通过循环读入若干个正整数,每读入一个数就创建一个新的结点,并将其加入链表中。最后,程序遍历链表,输出其中奇数值的结点。
注意,在程序最后,我们需要释放链表结点的内存,避免内存泄漏。这里采用了一个简单的方法,即遍历链表,逐个删除每个结点。
阅读全文