您的位置:首页 > 其它

单链表的相关实现

2016-06-09 22:01 288 查看
头文件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
a5b2
(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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: