数据结构(C++实现)--链表(2) 功能扩充

来源:互联网 发布:电力营销系统数据字典 编辑:程序博客网 时间:2024/06/05 00:39

在链表基本功能的基础上扩充一些功能。
1.在链表末尾增添一个元素Append():

template<class T>Chain<T>& Chain<T>::Append(const T&x){    ChainNode<T> *y;    y->data = x;    y->link = 0;    if (first)    {        last->link = y;        last = y;    }    else {        first = last = y;    }    return *this;}

2.创建一个链表遍历器:

template<class T>class ChainIterator {public:    T* Initialize(const Chain<T>& c)//返回的指针指向第一个结点    {        location = c.first;        if (location)return &location->data;        return 0;    }    T* Next()                     //返回的指针指向下一个结点    {        if (location)return 0;        location = location->link;        if (location)return &location->data;        return 0;    }private:    ChainNode<T> *location;};

采用了链表遍历器后,可以在线性时间内输出链表元素,而之前得成员函数Output()输出复杂度为n^2.可以这样使用这个线性遍历器:

int *x;ChainNode<T> c;x = c.Initialize(X);while(X){cout<<*x<<' ';x = c.Next();cout<<endl;
0 0
原创粉丝点击