标签:head todo value link ret esc style 代码 log
template <typename E>
链表的插入使用头插法,只需提交模板类函数的实现即可,不需要提交main函数,如下列代码所示:
template <typename E> LinkedList<E>::LinkedList(const LinkedList & that) { Node* current = 0; Node* node = that.first; while (node != 0) { if (current == 0) current= first = new Node(); else { current->next = new Node(); current = current->next; } current->data = node->data; current->next = 0; node = node->next; } } template <typename E> LinkedList<E>& LinkedList<E>::operator= (const LinkedList & that) { LinkedList<E> tmp(that); while (first != 0) removeFirst(); Node* current = 0; Node* node = tmp.first; while (node != 0) { if (current == 0) current= first = new Node(); else { current->next = new Node(); current = current->next; } current->data = node->data; current->next = 0; node = node->next; } return *this; } template <typename E> void LinkedList<E>::removeFirst() { Node * node = first; first = node->next; delete node; } template <typename E> void LinkedList<E>::addFirst(E data) { Node* newFirst = new Node(); newFirst->data = data; newFirst->next = first; first = newFirst; }
测试代码:
template <typename E> class LinkedList { private: // inner class: linked-list node class Node { public: E data; Node * next; }; Node * first; public: LinkedList() { first = 0; } ~LinkedList() { while (first != 0) { removeFirst(); } } E getFirst() { return first->data; } bool isEmpty() { return first == 0; } // TODO: LinkedList(const LinkedList & that); LinkedList & operator= (const LinkedList & that); void removeFirst() ; void addFirst(E data); }; /*template <typename E> LinkedList<E>::LinkedList(const LinkedList<E> & that) { } template <typename E> LinkedList<E> & LinkedList<E>::operator= (const LinkedList<E> & that) { } template <typename E> void LinkedList<E>::removeFirst() { Node * node = first; first = node->next; delete node; } template <typename E> void LinkedList<E>::addFirst(E data) { } */ //#include "source.cpp" #include <iostream> using namespace std; LinkedList<double> read() { LinkedList<double> list; for (int i = 0; i < 10; ++ i) { double value; cin >> value; list.addFirst(value); } return list; } void removeAndPrintAll(LinkedList<double> list) { while (! list.isEmpty()) { cout << list.getFirst() << endl; list.removeFirst(); } } int main() { LinkedList<double> list = read(); LinkedList<double> list2; list2 = list; removeAndPrintAll(list2); }
标签:head todo value link ret esc style 代码 log
原文地址:http://www.cnblogs.com/zmj97/p/6262064.html