单链表的相关实现

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值