数据结构 查找

#include<iostream>
using namespace std;
struct Node
{
    int data;
    Node *next;
};
class Link
{
public:
    Link(int a[],int n)
    {
         first=new Node;
         first->next=NULL;
         for(int i=0;i<n;i++)
         {
             Node *s=NULL;
             s=new Node;
             s->next=first->next;
             first->next=s;
         }
    }
    void chaozhao(int x)
    {
        Node *p;
        p=first->next;
        while(p!=NULL)
        {
            if(p->data==x)
            {
                cout<<"yes";
                break;
            }
            p=p->next;
        }
        if(p->next=NULL)
                cout<<"no";
    }
private:
    struct Node *first;
    int count;
};
int main()
{
    int i,a[100],x,n;
    cin>>n;
    for(i=0;i<n;i++)
        cin>>a[i];
    cin>>x;
    Link l(a,n);
    l.chaozhao(x);
    return 0;
}

修改如下,供参考:

#include<iostream>
using namespace std;
struct Node
{
    int data;
    Node *next;
};

class Link
{
public:
    Link(int a[],int n)
    {
         first=new Node;
         first->next=NULL;
         for(int i=0;i<n;i++)
         {
             Node *s=NULL;
             s=new Node;
             s->data=a[i];//结点数据
             s->next=first->next;
             first->next=s;
         }
    }
    void chaozhao(int x)
    {
        Node *p;
        p=first->next;
        while(p!=NULL)
        {
            if(p->data==x)
            {
                cout<<"yes";
                break;
            }
            p=p->next;
        }
        if(p==NULL) //if(p->next=NULL)
                cout<<"no";
    }
private:
    struct Node *first;
    int count;
};

int main()
{
    int i,a[100],x,n;
    cin>>n;
    for(i=0;i<n;i++)
        cin>>a[i];
    cin>>x;
    Link l(a,n);
    l.chaozhao(x);
    
    return 0;
}

 

这各IF错了:

        if(p->next=NULL)
                cout<<"no";

应该是:

        if(p==NULL)
                cout<<"no";

构造函数Link里还漏了一行:

s->data = a[i];

 

    Link(int a[],int n)
    {
         first=new Node;
         first->next=NULL;
         for(int i=0;i<n;i++)
         {
             Node *s=NULL;
             s=new Node;
             s->data = a[i];
             s->next=first->next;
             first->next=s;
         }
    }