/*
这个题就没什么算法了,直接利用两个指针,指向两个
节点,p1 p2,p1指向两者较大的,最后p1所指向的就是
表中值最大的节点
*/
#include <iostream> using namespace std; //*****************结构体******************** typedef struct Node { int elem; struct Node* Next; }Node; //*****************初始化表******************* void InitLink(Node* &L) { L = new Node; L->Next = NULL; } //*****************创建表********************** void CreatLink(Node* L) { cout<<"请输入表数据,以-1结束输入:"<<endl; Node* p = L; Node* s = new Node; while(cin>>s->elem,s->elem != -1) { s->Next = NULL; p->Next = s; p = s; s = new Node; } delete s; } //*****************打印表************************ void Print(Node* L) { Node* p = L->Next; while(p) { cout<<p->elem<<" "; p = p->Next; } cout<<endl; } //*****************查找最大元素值******************* Node* SearchMax(Node* L) { Node* p1; Node* p2; p1 = L->Next; p2 = p1->Next; while(p2) { if(p2->elem > p1->elem) { p1 = p2; p2 = p2->Next; } else { p2 = p2->Next; } } return p1; } int main() { Node* L; InitLink(L); CreatLink(L); cout<<"链表为:"; Print(L); Node* p = SearchMax(L); cout<<"表中最大值为:"; cout<<p->elem<<endl; return 0; }