题目要求:
- 输入n个不为零的整数作为节点元素值,遇到0代表输入结束(不创建元素值为0的节点),创建有序链表。输出整个链表。
- 输入一个整数,将该数插入到有有序链表相应位置。输出整个链表。
- 输入一个整数,在链表中进行搜索,输出其在链表中的第一个出现的位置。如果不存在输出0。
- 再一次输入一个整数,在链表中进行搜索,输出其在链表中的第一个出现的位置。如果不存在输出0。
- 再一次输入n个不为零的整数作为节点元素值,遇到0代表输入结束(不创建元素值为0的节点),创建一个新的有序链表。输出整个链表。
- 使用链表遍历器实现上面两个有序链表的合并,输出合并后的有序链表。
(提示:注意单节点链表的测试。)
//my solution
#include <iostream>
using namespace std;
template<class T>
struct chainNode
{
public:
T element;
chainNode<T>* next;
chainNode() {
}
chainNode(const T& theElement) {
element = theElement; next = NULL; }//当只有数据域传入时,将数据域初始化为NULL
chainNode(const T& theElement, chainNode<T>* theNext)
{
element = theElement;
next = theNext;
}
};
template<class T>
class ordinalChain
{
public:
//构造函数,复制构造函数,析构函数
ordinalChain() {
firstNode = NULL; listSize = 0; }
ordinalChain(const ordinalChain<T>&);
~ordinalChain();
//insert(),size(),indexOf(),output()
int size() const {
return listSize; }
void insert(const T&);
int indexOf(const T&) const;
void output(ostream& out) const;
friend ostream& operator<<(ostream& out, const ordinalChain<T>& c)
{
c.output(out);
return out;
}
//iterator define
class iterator
{
public:
//construction
iterator(chainNode<