C++数据结构模板,可以实现基本功能,用法和stl差不多,比如Q.pop();Q.push(a);Q.front();...... 

(由于动态链表用的不多,若有错误望各位大神不吝赐教:)

队列:

 class Queue
{
private:
int Head,Tail,Size;
int val[]; public: Queue()
{
Head=;
Tail=-;
Size=;
memset(val,,sizeof(val));
} inline bool empty()
{
return Size==;
} inline void push(const int & ele)
{
Tail=(Tail+)%;
Size++;
val[Tail]=ele;
return ;
} inline void pop()
{
if(Size==)return ;
Head=(Head+)%;
Size--;
return ;
} inline int front()
{
if(Size==)return ;
return val[Head];
} inline int back()
{
if(Size==)return ;
return val[Tail];
} inline int size()
{
return Size;
} inline void clear()
{
Head=;
Tail=-;
Size=;
memset(val,,sizeof(val));
return ;
}
}Q;

栈:

class    stack
{
private: int Size;
int val[]; int h_top; public: inline int top()
{
return val[h_top];
} inline int size()
{
return Size;
} inline bool pop()
{
if(Size==)return false;
val[h_top]=;
h_top--;
Size--;
return true;
} inline bool push(int temp_s)
{
h_top++;
Size++;
val[h_top]=temp_s;
return true;
} inline void clear()
{
memset(val,,sizeof(val));
h_top=-;
Size=;
return ;
} inline bool empty()
{
return Size==;
}
}st;

动态链表:

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime> using namespace std; template<typename _Tp>
class List{
public: class List_val{
private:
List_val *_next;
List_val *_last;
_Tp _data; public:
List_val(){
_next=NULL;
_last=NULL;
_data=;
return ;
} public:
void insert_back(_Tp _new_data){
List_val *_new_elem;
_new_elem=new List_val;
if(_next!=NULL)_new_elem->_next=_next;
if(_next!=NULL)_next->_last=_new_elem;
_new_elem->_last=this;
_next=_new_elem;
_new_elem->_data=_new_data;
return ;
} void insert_front(_Tp _new_data){
List_val *_new_elem;
_new_elem=new List_val;
if(_last!=NULL)_new_elem->_last=_last;
if(_last!=NULL)_last->_next=_new_elem;
_new_elem->_next=this;
_last=_new_elem;
_new_elem->_data=_new_data;
return ;
} public:
List_val* next(){
return _next;
} List_val* last(){
return _last;
} _Tp data(){
return _data;
} public:
void change_next(List_val* _new_next){
_next= _new_next;
return ;
} void change_last(List_val* _new_last){
_last= _new_last;
return ;
} void change_data(_Tp _new_data){
_data= _new_data;
return ;
} void del(){
_last->_next=_next;
_next->_last=_last;
delete[] this;
}
}; private:
List_val *_begin;
List_val *_end; public:
List(){
_begin=new List_val;
_end =new List_val;
_begin->change_next(_end);
_end->change_last(_begin);
return ;
} void push_front(_Tp _new_data){
_begin->insert_back(_new_data);
return ;
} void push_back(_Tp _new_data){
_end->insert_front(_new_data);
return ;
} List_val* begin(){
return _begin->next();
} List_val* end(){
return _end;
} List_val* find(List_val* _from,_Tp _find_data){
List_val *i;
for(i=_from;i!=NULL;i=i->next()){
if(i->data()==_find_data)return i;
} return _end;
} void insert_back(List_val* _from,_Tp _new_data){
_from->insert_back(_new_data);
return ;
} void insert_front(List_val* _from,_Tp _new_data){
_from->insert_front(_new_data);
return ;
} void del(List_val* _from){
_from.del();
return ;
}
}; int main(){
List<int> l;
int i; for(i=;i<=;++i)
l.push_back(i);
for(i=;i<=;++i)
l.push_front(i);
List<int>::List_val *j;
for(j=l.begin();j!=l.end();j=j->next()){
cout << j->data() << ' ' ;
} cout << endl; l.find(l.begin(),)->insert_front();
l.find(l.begin(),)->insert_back();
l.find(l.begin(),)->del();
for(j=l.begin();j!=l.end();j=j->next()){
cout << j->data() << ' ' ;
} cout << endl; return ;
}

C++ 数据结构模板 队列 栈 动态链表 模板 Queue Stack List的更多相关文章

  1. 数据结构应用实例#栈&单链表#简易计算器

    修改BUG的时候一不小心BUG越修越多,鉴于维护程序并不是学习数据结构的初衷,我已经果断的弃坑了!! 以下内容再不更新,Github上的代码直接无法正常编译运行.... 参考参考就好,学习到栈的作用就 ...

  2. 【LeetCode 232_数据结构_队列_实现】Implement Queue using Stacks

    class Queue { public: // Push element x to the back of queue. void push(int x) { while (!nums.empty( ...

  3. [Python] 数据结构--实现顺序表、链表、栈和队列

    说明: 本文主要展示Python实现的几种常用数据结构:顺序表.链表.栈和队列. 附有实现代码. 来源主要参考网络文章. 一.顺序表 1.顺序表的结构 一个顺序表的完整信息包括两部分,一部分是表中元素 ...

  4. c++学习书籍推荐《数据结构C++语言描述:应用标准模板库STL(第2版)》下载

    本书是Ford和Topp两位教授于1996看出版的名著Data Structures with C++的第2版,在全球范围内已经有数以万计的学生从中受益.作者将C++语言作为算法描述语言,应用包含规范 ...

  5. SDUT-2131_数据结构实验之栈与队列一:进制转换

    数据结构实验之栈与队列一:进制转换 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 输入一个十进制非负整数,将其转换成对 ...

  6. 【BZOJ 1507】【NOI 2003】&【Tyvj P2388】Editor 块状链表模板题

    2016-06-18 当时关于块状链表的想法是错误的,之前维护的是一个动态的$\sqrt{n}$,所以常数巨大,今天才知道原因TwT,请不要参照这个程序为模板!!! 模板题水啊水~~~ 第一次写块状链 ...

  7. C++采用模板实现栈的方法

    今天又看了遍<effective C++>,手动实现了一下条款42中的栈,贴出来当博客的处女贴. 首先栈的声明如下,采用了模板传入类型,而栈的底层采用是个链表. // stack.h // ...

  8. springboot mail整合freemark实现动态生成模板

    目标:1:springboot 整合 mail2: mail 使用freemark 实现模板动态生成(就是通过字符串生成模板,不需要在工程中写入固定模板)3: springboot 整合aop 实现日 ...

  9. Python列表操作与深浅拷贝(5)——数字处理函数、类型判断、列表链表队列栈

    python内建数据结构 分类 数值型: int float complex bool 序列对象: 字符串str 列表list 元组tuple 键值对: 集合set 字典dict 数值型 (list ...

随机推荐

  1. 【题解】永无乡 [HNOI2012] [BZOJ2733] [P3224]

    [题解]永无乡 [HNOI2012] [BZOJ2733] [P3224] [题目描述] 永无乡包含 \(n\) 座岛,编号从 \(1\) 到 \(n\) ,每座岛都有自己的独一无二的重要度,按照重要 ...

  2. 安卓UI自适应性

    出于安卓的碎片化原因,针对不同屏幕大小,最好是做到以下几点: 1.能用相对布局的就不用绝对布局,尽量使用权重,weight设置,相对布局和线性布局同条件情况下,优先选线性布局 2.在res目录下创建不 ...

  3. POJ 1584 计算几何

    思路: 求一遍凸包 用三角形面积(叉积求一下)/边长 求出来高,跟半径比一比 坑点:凸包上三点共线 //By SiriusRen #include <cmath> #include < ...

  4. python 生成器函数.推导式.生成器表达式

    一.生成器 什么是生成器,生成器的实质就是迭代器 在python中有三种方式来获取生成器: 1.通过生成器函数 2.通过各种推导式来实现生成器 3.通过数据的转换也可以获取生成器 1 def func ...

  5. ACM_绝对值排序

    Why Males And Females Apart? Time Limit: 2000/1000ms (Java/Others) Problem Description: In so many o ...

  6. .Net application,Session,Cache简单比较

    Application 对象用于存储和访问来自任何页面的变量,类似于 session 对象.不同之处在于,所有的用户分享一个 Application 对象,而 session 对象和用户的关系是一一对 ...

  7. 配置Oracle数据库的开机自启动

    每当数据库服务器重启后,都要重新启动数据库的监听和实例,特别是在服务器断电重启.例行维护性的场景下.能否像Windows服务器一样,让实例和监听随着服务的启动而启动呢?答案当然是肯定的,我们可以利用O ...

  8. 涨知识---V

    1.内存对齐 在解释内存对齐的作用前,先来看下内存对齐的规则: 1).  对于结构的各个成员,第一个成员位于偏移为0的位置,以后每个数据成员的偏移量必须是min(#pragma pack()指定的数, ...

  9. Hadoop Hive概念学习系列之hive里的视图(十二)

    不多说,直接上干货! 可以先,从MySQL里的视图概念理解入手 视图是由从数据库的基本表中选取出来的数据组成的逻辑窗口,与基本表不同,它是一个虚表.在数据库中,存放的只是视图的定义,而不存放视图包含的 ...

  10. PHP流程控制语句(if,foreach,break......)

    背景:PHP程序中,必不可少的要用到流程控制语句.这次对于流程控制语句进行一些总结. 条件控制语句和循环控制语句是两种基本的语法结构,它们都是用来控制程序执行流程.也是构成程序的主要语法基础. 一.程 ...