2203: 最小节点(线性表)
时间限制: 1 Sec 内存限制: 128 MB提交: 382 解决: 294
[提交][状态][讨论版][命题人:外部导入]
题目描述
(线性表)设有一个由正整数组成的无序(向后)单链表,编写完成下列功能的算法:找出最小值结点,且打印该数值。
输入
输入长度:6
输入数据:3 2 1 4 6 8
输出
1
样例输入
6
11 14 5 6 8 9
样例输出
5
#include<cstdio>
#include<cstdlib>
#include<iostream>
using namespace std;
#define MAXN 110
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode * next;
}LinkNode;
ElemType a[MAXN], e;
LinkNode *L;
void CreateList(LinkNode *&L, ElemType a[], int n)
{
LinkNode *r, *s;
L = (LinkNode *)malloc(sizeof(LinkNode));
r = L;
for(int i = 0; i < n; ++i)
{
s = (LinkNode *)malloc(sizeof(LinkNode));
s->data = a[i];
r->next = s;
r = s;
}
r->next = NULL;
}
void GetMin(LinkNode *L, ElemType &e)
{
LinkNode *p = L->next, *pre = L, *minp, *minpre;
minp = p;
minpre = pre;
while(p != NULL)
{
if(minp->data > p->data)
{
minp = p;
minpre = pre;
}
pre = p;
p = p->next;
}
e = minp->data;
return ;
}
int main()
{
int n;
cin >> n;
for(int i = 0; i < n; ++i)
cin >> a[i];
CreateList(L, a, n);
GetMin(L, e);
cout << e << endl;
return 0;
}