最小节点(线性表)
时间: 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;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。