输入若干个不超过一百的整数,建立单链表,然后通过一趟遍历在单链表中确定值最小的结点,输出该结点的值
时间: 2023-05-30 20:02:35 浏览: 123
思路:
1. 定义一个链表节点结构体,包括值和指向下一个节点的指针。
2. 输入若干个整数,依次创建节点并将其加入链表的尾部。
3. 遍历链表,记录最小值及其对应的节点,最后输出最小值即可。
代码实现如下:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
head = ListNode() # 创建一个空的头结点
p = head
n = int(input("请输入整数个数:"))
for i in range(n):
val = int(input("请输入一个整数:"))
node = ListNode(val)
p.next = node
p = node
# 遍历链表,找到最小值
min_val = head.next.val
min_node = head.next
p = head.next.next
while p:
if p.val < min_val:
min_val = p.val
min_node = p
p = p.next
print("最小值为:", min_val)
```
相关问题
输入若干个不超过100的整数,建立单链表,然后通过一趟遍历在单链表中确定值最小的结点。输出该结点的值
C++代码如下:
```c++
#include <iostream>
using namespace std;
struct ListNode { // 定义链表结点结构体
int val;
ListNode* next;
ListNode(int x): val(x), next(NULL) {}
};
int main() {
ListNode* head = NULL; // 定义链表头结点
int n;
cin >> n; // 输入整数个数
for (int i = 0; i < n; i++) {
int x;
cin >> x;
ListNode* node = new ListNode(x); // 创建新结点
node->next = head;
head = node; // 将新结点插入链表头部
}
ListNode* p = head; // 定义指针p指向链表头结点
int min_val = p->val; // 初始化最小值为第一个结点的值
while (p != NULL) {
if (p->val < min_val) {
min_val = p->val; // 更新最小值
}
p = p->next; // 指针p指向下一个结点
}
cout << min_val << endl; // 输出最小值
return 0;
}
```
输入样例:
```
5
1 3 5 2 4
```
输出样例:
```
1
```
请解释输入若干个不超过100的整数,建立单链表,然后通过一趟遍历在单链表中确定值最小的结点。输出该结点的值
首先,建立单链表的过程如下:
1. 定义一个链表结构体,包含一个整型数据和一个指向下一个节点的指针。
2. 输入第一个整数,作为链表的头节点。
3. 依次输入剩下的整数,每输入一个整数就创建一个新节点,并将其加入链表末尾。
4. 输入完成后,返回头节点即可。
最小值结点的查找过程如下:
1. 定义一个指向链表头节点的指针,并定义一个整型变量用于存储最小值,初值为链表头节点的值。
2. 从头节点开始遍历整个链表,比较每个节点的值与最小值的大小,如果小于最小值,则将最小值更新为该节点的值,并记录该节点的指针。
3. 遍历完成后,输出最小值即可。
以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node *next;
} Node;
Node* createList() {
Node *head, *tail, *p;
head = tail = (Node*) malloc(sizeof(Node));
head->next = NULL;
int num;
scanf("%d", &num);
while (num <= 100) {
p = (Node*) malloc(sizeof(Node));
p->data = num;
p->next = NULL;
tail->next = p;
tail = p;
scanf("%d", &num);
}
return head;
}
int findMin(Node *head, Node **minNode) {
int minVal = head->next->data;
Node *p = head->next;
*minNode = p;
while (p != NULL) {
if (p->data < minVal) {
minVal = p->data;
*minNode = p;
}
p = p->next;
}
return minVal;
}
int main() {
Node *head = createList();
Node *minNode;
int minVal = findMin(head, &minNode);
printf("minVal = %d\n", minVal);
return 0;
}
```
阅读全文