【C++】用类实现单向单链表的尾插PushBack(),尾删PopBack(),打印PrintSlist()。
来源:互联网 发布:哈布斯堡 知乎 编辑:程序博客网 时间:2024/05/28 06:07
建立源文件,命名为:Slist.cpp。
#include"Slist.h"int main(){ Test(); system("pause"); return 0;}
建立头文件,命名为:Slist.h。
#ifndef __SLISH_H__#define __SLIST_H__#include<iostream>using namespace std;typedef int DataType;class SlistNode{ friend class Slist;public: SlistNode(DataType x) :_next(NULL) , _data(x) {}private: DataType _data; SlistNode* _next;};class Slist{public: Slist() :_head(NULL) , _tail(NULL) {} Slist(const Slist& s) :_head(NULL) , _tail(NULL) { SlistNode* cur = s._head; while (cur) { this->PushBack(cur->_data); cur = cur->_next; } } Slist& operator= (const Slist& s) { Slist tmp; SlistNode* pcur = _head; while (pcur) { SlistNode* del = pcur; pcur = pcur->_next; delete del; del = NULL; } tmp = s; SlistNode* cur = s._head; while (cur) { this->PushBack(cur->_data); cur = cur->_next; } } ~Slist() { SlistNode* cur = _head; while (cur) { SlistNode* del = cur; cur = cur->_next; delete del; del = NULL; } } void PushBack(DataType x) { //0 1多 if (_head == NULL) { _head = new SlistNode(x); _tail = _head; } else { /*_tail->_next = new SlistNode(x); _tail = _tail->_next; */ SlistNode* cur = new SlistNode(x); _tail->_next = cur; _tail = cur; } } void PopBack() { if (_head == _tail) { if (_head == NULL) { return; } else { delete _head; _head = NULL; _tail = NULL; } } else { SlistNode* cur = _head; while (cur) { SlistNode* _next = cur->_next; if (_next == _tail) { delete _tail; _tail = NULL; _tail = cur; _tail->_next = NULL; } cur = cur->_next; } } } void PrintSlist() { if (_head== NULL) { return; } else { SlistNode* cur = _head; while (cur) { cout << cur->_data << " "; cur = cur->_next; } cout << endl; } }private: SlistNode* _head; SlistNode* _tail;};void Test(){ Slist s; s.PushBack(1); s.PushBack(2); s.PushBack(3); s.PushBack(4); s.PushBack(5); s.PrintSlist(); s.PopBack(); s.PrintSlist();}#endif //__SLIST_H__
本文出自 “Han Jing's Blog” 博客,请务必保留此出处http://10740184.blog.51cto.com/10730184/1747325
0 0
- 【C++】用类实现单向单链表的尾插PushBack(),尾删PopBack(),打印PrintSlist()。
- C语言:【动态顺序表】动态顺序表的初始化、打印、尾插PushBack、尾删PopBack
- 【C语言】单链表的所有操作的实现(包括PopBack、PushBack、PopFront、PushFront、Insert)
- 【C语言】单链表的所有操作的实现(包括PopBack、PushBack、PopFront、PushFront、Insert)
- 【C语言】单链表的所有操作的实现(包括PopBack、PushBack、PopFront、PushFront、Insert)
- 【C++】实现动态顺序表的PushBack(),PopBack(),PushFront(),PopFront(),Find(),Insert
- C语言:单链表的实现(包括:尾插、尾删、头插、头删、指定位置插入、长度、打印)
- 单链表的头插、中插、尾插、删除、逆序、显示(C语言实现)
- c语言:【顺序表】静态顺序表的初始化、打印、尾插、尾删
- 数组的链表实现:创建(头插/尾插)、打印、删除、插入
- 单向循环链表的头插,尾插,中间插以及删除节点
- C++语言实现单链表的尾插,尾删,头插,头删等
- 【C语言】静态顺序表的实现(包括头插、头删、尾插、尾删、查找、删除指定位置)
- 关于单链表的尾插,删除,反向打印单链表
- C语言实现链表的头插,尾插,插入,修改,删除和遍历
- c语言用尾递归实现单向链表的逆向排列
- C语言单向链表的实现
- C语言实现的单向链表
- 【C语言项目】注释转换
- 【String类浅拷贝的实现】C++:String类引用计数浅拷贝的两种实现
- 【String类】C++:String类的传统写法与现代写法
- 《剑指offer》字符串中的字符替换
- 【C++】实现动态顺序表的PushBack(),PopBack(),PushFront(),PopFront(),Find(),Insert
- 【C++】用类实现单向单链表的尾插PushBack(),尾删PopBack(),打印PrintSlist()。
- 【C++】实现双向链表的所有操作,包括逆置双链表(三种方法)
- 【C语言】单链表的所有操作的实现(包括PopBack、PushBack、PopFront、PushFront、Insert)
- 【继承与多态】C++:继承中的赋值兼容规则,子类的成员函数,虚函数(重写),多态
- 【C++】模版类实现普通类静态顺序表
- 【C++】认识模版函数
- 【C++】模版实现双向链表的各种操作(如:逆置、去重Unique、分类(冒泡)、合并)
- 【C++】容器适配器实现栈Stack的各种功能(入栈、出栈、判空、大小、访问所有元素等)
- 【C++】容器适配器实现队列Queue的各种功能(入队、出队、判空、大小、访问所有元素等)