头文件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