站点图标 陌路寒暄

最小节点(线性表)

最小节点(线性表)

时间: 1ms        内存:128M

描述:

(线性表)设有一个由正整数组成的无序(向后)单链表,编写完成下列功能的算法:找出最小值结点,且打印该数值。

输入:

输入长度:6

输入数据:3 2 1 4 6 8

输出:

1

示例输入:

6
11 14 5 6 8 9

示例输出:

5

提示:

参考答案(内存最优[0]):

#include <iostream> 
using namespace std; 
struct lb 
{ 
    int a; 
    lb *next; 
}; 
int main() 
{ 
    lb *p,*p_sta; 
    p=p_sta=new lb; 
    int n; 
    int i; 
    int min; 
    cin>>n; 
    for(i=0;i<n;i++) 
    { 
        cin>>p->a; 
        if(i!=n-1)p=p->next=new lb; 
        else p->next=NULL; 
    } 
    p=p_sta; 
    while(p!=NULL) 
    { 
        if(p_sta==p) min=p->a; 
        else if(min>p->a)min=p->a; 
        p=p->next; 
    } 
    cout<<min<<endl; 
    return 0; 
} 

参考答案(时间最优[0]):

#include <stdio.h> 
#include <stdlib.h> 
struct sa 
{ 
    int a; 
    struct sa *p; 
}; 
int main() 
{ 
    int n,min; 
    struct sa *p,*q,*head; 
    scanf("%d",&n); 
    p=q=malloc(sizeof(struct sa)); 
    scanf("%d",&p->a); 
    head=p; 
    min=p->a; 
    while(--n) 
    { 
        p=malloc(sizeof(struct sa)); 
        scanf("%d",&p->a); 
        if(n==1) 
            p->p=NULL; 
        else
            q->p=p; 
        q=p; 
        if(p->a<min) 
            min=p->a; 
    } 
    free(p); 
    printf("%d",min); 
    return 0; 
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

退出移动版