单链表的基本操作

来源:互联网 发布:uuu网络加速器下载 编辑:程序博客网 时间:2024/06/07 12:16
#include <iostream>using namespace std;class LinkNodeOfInt{    public:        int data;        LinkNodeOfInt *link;        LinkNodeOfInt(const int &a,LinkNodeOfInt *ptr)        {            data=a;            link=ptr;        }        LinkNodeOfInt()        {        }    };class ListOfint{    public:    LinkNodeOfInt *head;    LinkNodeOfInt *tail;    int size;    ListOfint()    {        head=new LinkNodeOfInt(0,NULL);        tail=head;        size=0;    }    ListOfint(const ListOfint &list)    {        head=new LinkNodeOfInt(0,NULL);        LinkNodeOfInt *cur=head->link;        LinkNodeOfInt *othercur=list.head->link;        int i=0;        size=list.size;    while(othercur!=NULL)    {          LinkNodeOfInt *s=new LinkNodeOfInt(othercur->data,NULL);          if(i==0)          {              head->link=s;              cur=head->link;          }          else          {   cur->link=s;              cur=cur->link;              i++;          }          othercur=othercur->link;    }    }    void insertTotail(int value)    {        LinkNodeOfInt *p=tail;        p->link=new LinkNodeOfInt(value,NULL);        tail=p->link;    }    void inserttoHead(int value)    {        LinkNodeOfInt *p=head->link;        LinkNodeOfInt *s=new LinkNodeOfInt(value,p);        head->link=s;    }    void prt_list()    {        LinkNodeOfInt *p=head->link;        while (p)        {            cout<<p->data<<endl;            p=p->link;        }    }    LinkNodeOfInt* setPos(int pos)    {        if(pos==-1)        {            return head;        }        int count=0;        LinkNodeOfInt *p=head->link;        while(p!=NULL&&count< pos){                p=p->link;                count++;        }        return p;    }   bool insertPos(int i,int value)   {       LinkNodeOfInt *p,*q;       if(p==setPos(i-1)==NULL)       {           cout<<"the operation is illegal";           return false;       }       q=new LinkNodeOfInt(value,p->link);       p->link=q;       if(p==tail)       {           tail=q;       }       size++;       return true;   }   bool deletePos(int i)   {       LinkNodeOfInt *p ,*q;       if(p=setPos(i-1)==tail||p==tail)       {           cout<<"the operation is illegal";           return false;       }       q=p->link;       if(q==tail)       {           tail=p;           p->link=NULL;           delete q;       }       else if(q !=NULL)       {           p->link=q->link;           delete q;       }       size--;       return true;   }   int getSize()   {       return size;   }};
0 0
原创粉丝点击