试编写一个算法,找出一个循环链表中的最小值。我是新手,编了一个程序,不知错在哪

#include
using namespace std;

class LinkNode
{
int data;
LinkNode *link;
LinkNode(int d=0,LinkNode *l=0){data=d;link=l;}
};

class List
{
private:
LinkNode *first;
int n;
public:
List()
{
first=new LinkNode;
first->link=0;
first->data=0;
}

~List()
{
    LinkNode *p;
    p=first;
    while(p)
    {
        first=p->link;
        delete p;
        p=first;
    }
}

void Create()
{
    LinkNode *p,*last;
    int n,x;
    p=first->link;
    cout<<"输入元素个数:"<<endl;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cout<<"输入第"<<i<<"个元素值"<<endl;
        cin>>x;
        last=new LinkNode(x);
        p->link=last;
        p=last;
    }
    last->link=first;
}

void Search()
{
    LinkNode *p,*last,*q;
    int i;
    p=first->link;
    last=p->link;
    for(i=0;i<=n;i++)
    {
       if(p->data>=last->data)
       {
           q=last->data;
           p=last->link;
           last=p->link;
       }
       else
       {
           q=p->data;
           p=last->link;
           last=p->link;
       }
    }
    cout<<"链表中的最小值:"<<p->data<<endl;
}

};

void main()
{
List t;
t.Create();
t.Search();
}