关于链表如何输出最小值的问题
不算难,提供一下思路,不要太复杂,我看不懂,尽量简单明了,用c++
C++代码:
#include <iostream>
using namespace std;
typedef struct _data
{
int data;
struct _data* next;
}StNode;
int main()
{
int n, i,minv=0;
StNode* head, * p, * t;
head = new StNode;
head->next = 0;
p = head;
cin >> n;
for (i = 0; i < n; i++)
{
t = new StNode;
cin >> t->data;
if (p == head)
minv = t->data;
else if (t->data < minv)
minv = t->data;
t->next = NULL;
p->next = t;
p = t;
}
printf("min=%d", minv);
//释放空间
while (head)
{
p = head->next;
delete head;
head = p;
}
head = 0;
return 0;
}
C代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct _data
{
int data;
struct _data* next;
}StNode;
int main()
{
int n, i,minv=0;
StNode* head, * p, * t;
head = (StNode*)malloc(sizeof(StNode));
head->next = 0;
p = head;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
t = (StNode*)malloc(sizeof(StNode));
scanf("%d", &t->data);
if (p == head)
minv = t->data;
else if (t->data < minv)
minv = t->data;
t->next = NULL;
p->next = t;
p = t;
}
printf("min=%d", minv);
//释放空间
while (head)
{
p = head->next;
free(head);
head = p;
}
head = 0;
return 0;
}
一直遍历,用一个数记录最小值,一开始让他等于第一个节点的值,之后如果有节点比最小的小就更新最小值
这是一个例子
Status Found_L(LinkList L)
{
int min;
LinkList p=L;
min=p->data;
while(p){
if(p->data <= min){
min=p->data;
}
p=p->next;
}
L=L->next;
printf("最小值为:%d\n",min);
}
遍历链表,找出最小值即可
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!