用数据结构与算法的方式设计带头结点单链表的算法getMinData(SLinkNode *head),返回单链表结点数据域的最小值,如果原单链表为空则返回-1。假设单链表结点数据域的值为正整数
时间: 2024-10-16 12:04:27 浏览: 39
设计一个带头结点的单链表`SLinkNode`,用于获取链表中最小数据值的算法`getMinData(SLinkNode *head)`,可以按以下步骤进行:
1. 初始化两个变量`min_val`和`current`。`min_val`设为`INT_MAX`(表示最大负整数),`current`设为`head`。
2. 当`current`不为`NULL`时,进入循环,遍历链表:
```c++
while (current != NULL) {
// 检查当前节点的数据值与已找到的最小值比较
if (current->data < min_val) {
min_val = current->data; // 更新最小值
}
// 移动到下一个节点
current = current->next;
}
```
3. 循环结束后,`min_val`存储的就是链表中的最小数据值。如果整个链表为空,即`current == NULL`时,`min_val`依然保持初始的`INT_MAX`,因此返回`min_val`即可。
以下是完整的伪代码形式:
```cpp
int getMinData(SLinkNode* head) {
if (!head) return -1; // 如果链表为空,返回-1
int min_val = INT_MAX;
SLinkNode* current = head;
while (current) {
if (current->data < min_val) {
min_val = current->data;
}
current = current->next;
}
return min_val;
}
```
阅读全文