编程实现:输入若干个正整数(输入-1为结束标志),建立一个单向链表,将其中的偶数值结点删除后输出。链表节点定义为: struct node{ int data; struct node *next; } 输入输出示例:括号内为说明
时间: 2023-06-05 15:47:41 浏览: 794
题目大意:编程实现:输入若干个整数(输入-1为结束标志),建立一个单向链表,将其中的偶数值节点删除后输出。链表节点定义为:struct node{ int data; struct node *next; },示例:括号内为说明。
解题思路:根据题目要求,输入若干个整数,建立单向链表。如果输入的数为-1,则跳出输入循环;同时,可以利用循环链表节点的特点,在链表尾部添加一个特殊节点作为链表的结束标记。在遍历链表的过程中,如果遇到偶数值节点(data%2==0),利用节点的前驱节点指针将该节点删除即可。最后输出删除后的链表即可。
代码如下:
相关问题
编程实现:输入若干个正整数(输入-1为结束标志),建立一个单向链表,将其中的偶数值结点删除后输出。
在Python中,你可以使用`ListNode`类代表链表节点,然后编写一个函数来实现这个功能。下面是一个简单的示例:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def delete_even_numbers(head):
if head is None or head.val == -1:
return None
current = head
prev = None
while current is not None and current.val != -1:
if current.val % 2 != 0:
# 如果当前值是奇数,将其添加到结果链表中
if prev is not None:
prev.next = current
else:
# 如果是头节点,直接指向当前节点
new_head = current
prev = current
else:
# 如果是偶数,跳过并更新prev和current指针
current = current.next
return new_head
# 示例:
# 创建链表 [1, 2, 3, 4, 5, -1]
head = ListNode(1)
head.next = ListNode(2)
head.next.next = ListNode(3)
head.next.next.next = ListNode(4)
head.next.next.next.next = ListNode(5)
head.next.next.next.next.next = ListNode(-1)
new_head = delete_even_numbers(head)
while new_head:
print(new_head.val)
new_head = new_head.next
```
这个函数会遍历链表,当遇到一个偶数值时,它会跳过该节点。当找到一个奇数值或到达链表末尾时,它会将之前遇到的所有奇数节点连接起来作为新的链表返回。
编程实现:输入若干个正整数(输入-1为结束标志),建立一个单向链表,将其中的偶数值结点删除后输出。链表节点定义为: struct Node{ int data; struct Node *next; }
好的,以下是C++代码实现:
```
#include <iostream>
using namespace std;
struct Node{
int data;
struct Node* next;
};
void deleteEvenNodes(Node* head){
Node* current = head;
Node* prev = NULL;
while(current != NULL){
if(current->data % 2 == 0){
if(prev == NULL){
head = current->next;
delete current;
current = head;
}
else{
prev->next = current->next;
delete current;
current = prev->next;
}
}
else{
prev = current;
current = current->next;
}
}
}
void printList(Node* head){
Node* current = head;
while(current != NULL){
cout << current->data << " ";
current = current->next;
}
cout << endl;
}
int main(){
Node* head = NULL;
Node* tail = NULL;
int data;
cout << "请输入若干个正整数,以-1结束:" << endl;
cin >> data;
while(data != -1){
Node* newNode = new Node;
newNode->data = data;
newNode->next = NULL;
if(head == NULL){
head = newNode;
tail = newNode;
}
else{
tail->next = newNode;
tail = newNode;
}
cin >> data;
}
deleteEvenNodes(head);
printList(head);
return 0;
}
```
输入样例:
```
请输入若干个正整数,以-1结束:
1 2 3 4 5 6 -1
```
输出样例:
```
1 3 5
```
阅读全文