如何实现带头节点的单向循环链表 C++类实现

来源:百度知道 编辑:UC知道 时间:2024/06/24 08:47:45
//head 是头节点,本身的link指向自己,first指向第一个真实的存储数据的节点
//头节点的初始化在构造函数中已经实现,但插入第一个节点是不知如何插入,还是头节点那样初始化根本就不对?
//在Chain类中只有first和head两个指针的情况下能否实现单向循环链表?
//请高手帮忙修改Insert(),其他的函数也帮忙改改,不胜感激
#include<iostream.h>
#include<stdlib.h>
/////////////////类定义//////////////////
template <class T>
class Chain;
template <class T>
class ChainNode
{
friend Chain<T>;
private:
T data;
ChainNode<T> *link;
};
template<class T>
class Chain
{
public:
Chain()
{
head=new ChainNode<T>;
head->link=first;
head->data=0;//head是不存储数据的头节点,头节点的LINK指向自己
}
~Chain();
Chain<T>& Insert(int k,const T&x);
void Output(ostream& out) const;
private:
ChainNode<T> *first,*head;//first是指向第一个真实数据的节点
};

//////////////析构函数///////////////////
template<class T>
Chain&l

感觉是不行,,具体怎么改 要想想

改了一下。
#include<iostream>
#include<stdlib.h>
using namespace std;
/////////////////类定义//////////////////
template <class T>
class Chain;

template <class T>
class ChainNode
{
friend Chain<T>;
private:
T data;
ChainNode<T> *link;
};

template<class T>
class Chain
{
public:
Chain()
{
first=new ChainNode<T>;
first->link=first;
first->data=0;//first是不存储数据的头节点,头节点的LINK指向自己
head = NULL;//------初始化head指向空结点
}
~Chain();
Chain<T>& Insert(int k,const T&x);
void Output(ostream& out) const;
private:
ChainNode<T> *first,*head;//first是指向第一个真实数据的节点
};

//////////////析构函数///////////////////
template<class T>
Chain<T>::~Chain()