头文件SList.h #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> #include<stdio.h> using namespace std; #pragma once typedef int DataType; struct Node { Node(const DataType& d) :_data(d) , _next(NULL) {} DataType _data; struct Node* _next; }; class SList { public: friend ostream& operator<<(ostream& os, SList& s); SList() :_head(NULL) , _tail(NULL) {} ~SList() { if (_head == NULL) return; Node* cur = _head; while (cur) { Node* del = cur; cur = cur->_next; delete del; } delete cur; _head = NULL; _tail = NULL; } public: void PushBack(const DataType& d); void PopBack(); void PushFront(const DataType& d); void PopFront(); Node* Find(const DataType& d); void Insert(Node* pos,const DataType& d); private: Node* _head; Node* _tail; }; 源文件 #include"SList.h" ostream& operator<<(ostream& os, SList& s) { if (s._head == NULL) return os; Node* cur = s._head; while (cur!= NULL) { os << cur->_data << "->"; cur = cur->_next; } cout << "over" << endl; return os; } void SList::PushBack(const DataType& d) { Node* newNode = new Node(d); if (_head == NULL)//无节点 { _head = newNode; _tail = _head; } else { _tail->_next = newNode; _tail = newNode; } } #include"SList.h" int main() { SList slist1; slist1.PushBack(1); slist1.PushBack(2); slist1.PushBack(3); slist1.PushBack(4); cout << slist1 << endl; slist1.PopBack(); cout << slist1 << endl; slist1.PopBack(); cout << slist1 << endl; slist1.PopBack(); cout << slist1 << endl; slist1.PopBack(); cout << slist1 << endl; slist1.PopBack(); cout << slist1 << endl; getchar(); return 0; }
本文出自 “顺势而为” 博客,请务必保留此出处http://lk123456.blog.51cto.com/10831443/1751092
原文:http://lk123456.blog.51cto.com/10831443/1751092