/////////////////////////////////////////////////////////// //// 单链表结构测试程序 /////////////////////////////////////////////////////////// #include <iostream.h> #include <fstream.h> #include "link.h" #include "complex.h"
void main() { //Node类测试代码 Node<int> a(10); Node<int> b(20, &a); cout << b.NextNode()->GetData() << endl; Node<int> *pNode = new Node<int>(33, &b); cout << pNode->NextNode()->NextNode()->GetData() << endl; delete pNode;
//LinkedList类测试代码 LinkedList<int> L1; //声明结点数据域为int类型的链表 LinkedList<Complex> L2; //声明结点数据域为Complex类型的链表 register int i; for (i = 0; i < 10; i++) { L1.InsertFront(i); //表头插入 L2.InsertRear(Complex(i, i*1.5)); //表尾插入 } L1.PrintList(); //输出L1(到屏幕) L1.Reset(5); //定位至位序为5的结点 L1.DeleteAt(); //删除当前位置的结点 L1.DeleteAt(); //删除当前位置的结点 L1.PrintList(); //输出L1 L2.PrintList(" ==> ", 5); //输出L2,以逗号间隔,每行5个 for (i=0; i < 100; i++) L2.DeleteAtPos(5); //删除位序为5的结点 L2.PrintList(); //输出L2 ofstream of("test.txt"); //新建文件流 L1.PrintList("\t", 2, of); //输出L1到文件,以Tab(\t)间隔,每行2个 }
/* 附:复数类Complex定义如下: /////////////////////////////////////////////////////////////////// //// Complex.h /////////////////////////////////////////////////////////////////// #include <iostream.h> class Complex { //a + bi private: double a, b; public: Complex(double aa=0, double bb=0) { //带缺省值的构造函数 a = aa; b = bb; } Complex(const Complex &x) { //构造函数的重载(拷贝构造函数) a = x.a; b = x.b; } double Real() { return a; } //实部 double Image() { return b; } //虚部 double r() { return a; } //取实部 double i() { return b; } //取虚部 void SetRealPart(double aa) { a = aa; } //设置实部 void SetImagePart(double bb) { b = bb; } //设置虚部 //...... Complex operator+(const Complex &x) const { return Complex(a + x.a, b + x.b); } Complex operator+(double x) const { return Complex(a + x, b); } Complex operator-(const Complex &x) const { return Complex(a - x.a, b - x.b); } //其它运算符的重载(略) friend Complex operator+(double d, const Complex &x); friend istream& operator >> (istream &stream, Complex &x); friend ostream& operator << (ostream &stream, const Complex &x); friend int operator==(const Complex &x, const Complex &y); };
istream& operator >> (istream &stream, Complex &x) { return stream >> x.a >> x.b; } ostream& operator << (ostream &stream, const Complex &x) { stream << x.a; if (x.b > 0) stream << '+' << x.b << 'i'; else if (x.b < 0) stream << x.b << 'i'; return stream; } int operator==(const Complex &x, const Complex &y) { return (x.a == y.a) && (x.b == y.b); } Complex operator+(double d, const Complex &x) { return Complex(d + x.a, x.b); } */ 
|