打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C++写的一个链表类
            C++写的一个链表类
                                  
typedef char* ELEM;
class Link{
      public:
             ELEM element;
             Link *next;
             Link (const ELEM& elemval,Link* nextval=NULL)
             {element=elemval;next=nextval;}
             Link(Link* nextval=NULL){next=nextval;}
             ~Link(){}
      };
class List{
      private:
              Link* head;
              Link* tail;
              Link* curr;
      public:
             List(const int);
             ~List();
             void clear();
             void insert(const ELEM&);
             void append(const ELEM&);
             ELEM remove();
             void setFirst();
             void next();
             void prev();
             int length() const;
             void setPos(const int);
             void setValue(const ELEM&);
             ELEM currValue() const;
             bool isEmpty() const;
             bool isInList() const;
             bool find(const ELEM&);
      public:
             void Display();
};
void List::Display()
{
  for(int i=0;i<length();i++)
  {
       cout<<curr->element<<endl;
       this->next();
   }
}
List::List(const int sz)
{
    tail=head=curr=new Link;                
}
List::~List()
{
         while(head!=NULL)
         {
            curr=head;
            head=head->next;
            delete curr;               
                   
}
void List::clear()
{
  while(head->next!=NULL)
  {
    curr=head->next;
    head->next=curr->next;
    delete curr;                    
           
  curr=tail=head;
}
void List::insert(const ELEM& item)
{
     assert(curr!=NULL);
     curr->next=new Link(item,curr->next);
     if(tail==curr)
     tail=curr->next;
}
void List::append(const ELEM& item)
{
   tail=tail->next=new Link(item,NULL);
}
ELEM List::remove()
{
     assert(isInList());
     ELEM temp=curr->next->element;
     Link* ltemp=curr->next;
     curr->next=ltemp->next;
     if(tail==ltemp) tail=curr;
     delete ltemp;
     return temp;
}
void List::setFirst()
{curr=head;}
void List::next()
{if(curr!=NULL) curr=curr->next;}
void List::prev()
{Link* temp=head;
if((curr=NULL)||(curr==head))
   { curr=NULL;return;}
   while((temp!=NULL)&&(temp->next!=curr))
   curr=temp;
}
int List::length() const
{
    int cnt=0;
 for(Link* temp=head->next;temp!=NULL;temp=temp->next)
       cnt++;
return cnt;
}
void List::setPos(const int pos)
{
     curr=head;
     for(int i=0;(curr!=NULL)&&(i<pos);i++)
     curr=curr->next;
}
void List::setValue(const ELEM& val)
{
     assert(isInList());curr->next->element=val;  
}
ELEM List::currValue() const
{assert(isInList());return curr->next->element;}
bool List::isEmpty() const
{
  return head->next=NULL;   
}
bool List::isInList() const
{return (curr!=NULL)&&(curr->next!=NULL);}
bool List::find(const ELEM& val)
{
     while(isInList())
     if(curr->next->element==val)
     return true;
     else
     curr=curr->next;
     return false; 
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
单链表知识详解
链表——用C++模板实现
链表操作
2 线性表——链表
java实现链表
面试中经常让写的关于链表的代码
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服