也许是因为我是一个更新的人,无法定义它属于哪种问题。所以搜索后我找不到想要的结果。
这是我用C ++模板实现的链表
template<class T> struct Node
{
T value;
Node<T>* pre;
Node<T>* next;
};
template<class T> class Flist
{
private:
Node<T>* front;
Node<T>* end;
int count;
public:
Flist();
~Flist();
Flist(const Flist& C_list);
inline void Deeply_Copy(const Flist& Copylist);
bool Isempty() const;
int Listsize() const;
Node<T>& Listfront()const;
Node<T>& Listend() const;
void push_front(T N);
void push_back(T N);
void del_front();
void del_back();
Node<T>* Listfind(T x);
T ShowKey(int n);
};
template<class T> T Flist<T>::ShowKey(int n)
{
if (front == 0)
{
cout << "there is no element is the list.." << endl;
return ???;
}
Node<T>* temp = front;
while(n--)
{
temp = temp->next;
}
return temp->value;
}
函数ShowKey(int n)我希望它返回(不仅仅是显示)第n个元素的值,但如果列表为空,我不知道要返回什么。我不想使用exit来停止程序。有没有更简洁的方法来处理这种情况?
答案 0 :(得分:2)
我将功能签名更改为
bool showKey(int n, T& value);
并使用它来设置值变量,如果条目n中存在条目则返回true,如果条目不存在则返回false(并保持值不变)。
答案 1 :(得分:0)
你最好的选择可能是抛出异常; std::domain_error
或std::range_error
可能适用。