链表基本操作的实现.docVIP

  • 16
  • 0
  • 约5.56千字
  • 约 7页
  • 2018-12-03 发布于广东
  • 举报
实验二、链表基本操作的实现 实验目的 1 理解单链表类的定义; 2掌握单链表类成员函数的实现; 3学会设计实验数据验证程序。 实验环境 计算机,window xp操作系统,VC++6.0 实验内容 #include iostream using namespace std; template class T struct LinkNode { //链表结点类的定义 T data; //数据域 LinkNodeT *link; //链指针域 LinkNode() { link = NULL; } //构造函数 LinkNode(T item, LinkNodeT *ptr = NULL) { data = item; link = ptr; } //构造函数 bool operator== (T x) { return data.key == x; } //重载函数,判相等 bool operator != (T x) { return data.key != x; } }; template class T class List { //单链表类定义 protected: LinkNodeT *first; //表头指针 public: List() { first = new LinkNodeT ; } //构造函数 List(T x) { first = new LinkNodeT (x); } List( ListT L); //复制构造函数 ~List(){ } //析构函数 void makeEmpty(); //将链表置为空表 int Length() const; //计算链表的长度 int Search(T x); //搜索含x元素 LinkNodeT *Locate(int i); //定位第i个元素 T *getData(int i); //取出第i元素值 void setData(int i, T x); //更新第i元素值 bool Insert (int i, T x); //在第i元素后插入 bool Remove(int i); //删除第i个元素 bool IsEmpty() const //判表空否 { return first-link == NULL ? true : false; } LinkNodeT *getFirst() const { return first; } void setFirst(LinkNodeT *f ) { first = f; } void Sort(); //排序 void output(); void clear() ; }; template class T ListT::List( ListT L) { T value; LinkNodeT*srcptr=L.getHead(); LinkNodeT*destptr=first=new LinkNodeT; while(srcptr-link!=NULL) { value=srcptr-link-data; desptr-link=new LinkNodeT(value); desptr=desptr-link; srcptr=srcptr-link; } destptr-link=NULL; } template class T LinkNodeT*ListT::Locate(int i) { if(i0) return NULL; LinkNodeT*current=first; int k=0; while(current!=NULLki) {current=current-link; k++;} return current; } temp

文档评论(0)

1亿VIP精品文档

相关文档