C语言数据结构查找最小值:返回最小值在单链表的位序,若为空表,返回0;参数min带回最小值
时间: 2024-05-12 20:21:02 浏览: 11
以下是使用C语言实现查找单链表中的最小值,并返回其在单链表中的位置的函数代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data; // 数据域
struct Node* next; // 指针域
} Node, *LinkedList;
int findMin(LinkedList L, int* min) {
int pos = 0;
if (L == NULL || L->next == NULL) {
return 0; // 空表或只有一个结点
}
Node* p = L->next;
*min = p->data; // 先将第一个结点的值作为最小值
while (p != NULL) {
pos++;
if (p->data < *min) {
*min = p->data; // 更新最小值
}
p = p->next;
}
return pos;
}
```
其中,参数`L`为指向单链表头结点的指针,`min`为指向最小值的指针。函数返回最小值在单链表中的位置,如果单链表为空表或只有一个结点,则返回0。
使用示例:
```c
int main() {
LinkedList L = (LinkedList)malloc(sizeof(Node)); // 创建头结点
Node* p = (Node*)malloc(sizeof(Node)); // 创建第一个结点
p->data = 3;
L->next = p;
p->next = NULL;
int min;
int pos = findMin(L, &min);
if (pos == 0) {
printf("Empty List\n");
} else {
printf("The minimum value is %d, at position %d\n", min, pos);
}
return 0;
}
```
输出结果为:
```
The minimum value is 3, at position 1
```