- 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)