使用数组模拟单链表
题目描述
利用单链表表示一个整数序列,通过一趟遍历在单链表中确定值最大的结点。
输入
多组数据,每组数据有两行,第一行为链表的长度n,第二行为链表的n个元素(元素之间用空格分隔)。当n=0时输入结束。
输出
对于每组数据分别输出一行,输出每个链表的最大值。
样例输入 Copy
5
2 1 3 5 4
6
2 3 10 4 5 1
4
-1 -2 -3 -4
0
样例输出 Copy
5
10
-1
源代码
#include <iostream>
using namespace std;
const int N = 1000000+10;
int e[N],ne[N],head,idx;
void init()
{
head=-1;
idx=0;
}
void add_to_head(int x)
{
e[idx]=x;
ne[idx]=head;
head=idx++;
}
void insert(int x,int k)
{
e[idx]=x;
ne[idx]=ne[k];
ne[k]=idx++;
}
void remove(int k)
{
ne[k]=ne[ne[k]];
}
int main()
{
int n;
while(cin>>n,n!=0)
{
init();
int maxn=-1e9;
for(int i = 1;i <= n;i ++ )
{
int num;
cin>>num;
maxn=max(maxn,num);
if(i==1)add_to_head(num);
else insert(num,idx-1);
}
cout<<maxn<<endl;
}
}