c语言编程输入若干个不超过100的整数,建立单链表,然后通过一趟遍历在单链表中确定值最小的结点。输出该结点的值 【输入格式】: 首先输入一个整数n,表示测试数据的个数,然后在下一行依次输入n个不超过100的整数。
时间: 2024-09-26 19:07:23 浏览: 41
在C语言中,你可以使用结构体和指针来创建一个单链表,并实现寻找其中最小值的功能。以下是简单的步骤:
1. 定义一个链表节点结构体,包含整数值和指向下一个节点的指针:
```c
typedef struct ListNode {
int val;
struct ListNode* next;
} ListNode;
```
2. 创建一个函数`createList`用于从输入中读取整数并添加到链表中:
```c
ListNode* createList(int n) {
ListNode* head = NULL;
ListNode* tail = NULL;
for (int i = 0; i < n; i++) {
int input;
scanf("%d", &input);
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->val = input;
newNode->next = NULL;
if (head == NULL) {
head = tail = newNode;
} else {
tail->next = newNode;
tail = newNode;
}
}
return head;
}
```
3. 创建一个函数`findMinNode`遍历链表找到最小值节点:
```c
ListNode* findMinNode(ListNode* head) {
if (head == NULL) {
return NULL;
}
ListNode* current = head;
while (current != NULL) {
if (current->val < minVal) {
minVal = current->val;
minNode = current;
}
current = current->next;
}
return minNode;
}
int minVal = INT_MAX; // 初始化最小值为最大整数
ListNode* minNode = NULL; // 初始化最小值节点为NULL
void main() {
int n;
scanf("%d", &n);
ListNode* listHead = createList(n);
ListNode* minNodeFound = findMinNode(listHead);
if (minNodeFound) {
printf("最小值节点的值: %d\n", minNodeFound->val);
} else {
printf("链表为空或所有元素都相同\n");
}
// 清理内存
free(minNodeFound);
cleanUpLinkedList(listHead); // 自定义链表清理函数
}
```
这里假设你需要一个自定义的链表清理函数`cleanUpLinkedList`来释放已分配的内存。记得处理好边界情况和错误检查。
阅读全文