编程实现:输入若干个正整数(输入-1为结束标志),建立一个单向链表,将其中的偶数值结点删除后输出。链表节点定义为: struct node{ int data; struct node *next; } 输入输出示例:括号内为说明
时间: 2023-06-05 20:47:41 浏览: 294
题目大意:编程实现:输入若干个整数(输入-1为结束标志),建立一个单向链表,将其中的偶数值节点删除后输出。链表节点定义为:struct node{ int data; struct node *next; },示例:括号内为说明。
解题思路:根据题目要求,输入若干个整数,建立单向链表。如果输入的数为-1,则跳出输入循环;同时,可以利用循环链表节点的特点,在链表尾部添加一个特殊节点作为链表的结束标记。在遍历链表的过程中,如果遇到偶数值节点(data%2==0),利用节点的前驱节点指针将该节点删除即可。最后输出删除后的链表即可。
代码如下:
相关问题
编程实现:输入若干个正整数(输入-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
```
输人若干个正整数(输入-1 为结束标志),并建立个单向链表,将其中的偶数值结点删除后输出。试编写相应程序。
题目描述:输入一个整数(输入-1为结束标志),并建立一个单向链表,将其中的偶数值结点删除后输出。
这道题目要求实现一个简单的单向链表的操作,可以通过创建一个类来实现。
首先,我们创建一个Node类,表示单向链表的每个节点,包含两个属性:value和next,分别表示该节点的值和指向下一个节点的指针。同时,该类还需要包含一个删除偶数值节点的方法。
在删除偶数节点的方法中,我们可以通过一个while循环遍历整个链表,依次判断每个节点的值是否为偶数,如果是则将该节点从链表中删除。最后,我们将链表中剩余节点的值输出即可。
代码实现如下:
```
class Node:
def __init__(self, value):
self.value = value
self.next = None
def remove_even(self):
while self.next:
if self.next.value % 2 == 0:
self.next = self.next.next
else:
self = self.next
def print_list(self):
while self:
print(self.value, end=' ')
self = self.next
print()
if __name__ == '__main__':
head = Node(None)
current = head
while True:
num = int(input("请输入一个整数:"))
if num == -1:
break
new_node = Node(num)
current.next = new_node
current = new_node
head.remove_even()
head.print_list()
```
调用该程序后,我们可以输入一系列整数,程序会自动创建单向链表,并删除其中的偶数节点,最终将剩余节点的值输出。