C++相关问题,懂的看一下,

关于链表如何输出最小值的问题
不算难,提供一下思路,不要太复杂,我看不懂,尽量简单明了,用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);
}

遍历链表,找出最小值即可

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632