mylist

  1 //list参考
  2
  3 #ifndef  MYLIST_INC
  4 #define  MYLIST_INC
  5
  6 #include <qmutex.h>
  7
  8 template <typename T>
  9 class MyList
 10 {
 11 public:
 12 MyList(void)
 13 {
 14     mHead= 0;
 15     mCur= 0;
 16     mTotal = 0;
 17 }
 18
 19 private:
 20 struct Node
 21 {
 22     T cp;
 23     Node *next;
 24 };
 25
 26 public:
 27
 28 /*
 29  *功能: 添加到队列
 30  *参数: null
 31  *返回: void
 32  */
 33 void push_back(T cp)
 34 {
 35     if(cp == 0)
 36     {return;}
 37
 38     mMutex.lock();
 39     Node *node = new Node();
 40     node->cp = cp;
 41     node->next = 0;
 42
 43     if(mHead == 0)
 44     {
 45         mHead = node;
 46         mCur = node;
 47     }
 48     else
 49     {
 50         mCur->next = node;
 51         mCur = node;
 52     }
 53
 54     ++mTotal;
 55     mMutex.unlock();
 56
 57 }
 58
 59
 60 /*
 61  *功能: 获取队列头
 62  *参数: null
 63  *返回: void
 64  */
 65 T front()
 66 {
 67     if(mTotal == 0)
 68     {
 69         return 0;
 70     }
 71     return mHead->cp;
 72 }
 73
 74
 75 /*
 76  *功能: 删除队列头并释放该内存
 77  *参数: null
 78  *返回: void
 79  */
 80 void pop_front()
 81 {
 82     mMutex.lock();
 83
 84     if(mTotal != 0)
 85     {
 86         T tmp = mHead->cp;
 87         mHead = mHead->next;
 88         --mTotal;
 89
 90         delete[] tmp;
 91     }
 92     mMutex.unlock();
 93 }
 94
 95 //返回队列大小
 96 int size()
 97 {
 98     return mTotal;
 99 }
100
101 private:
102     Node *mHead;
103     Node *mCur;
104
105     QMutex mMutex;
106     int mTotal;
107 };
108
109 #endif   /* ----- #ifndef MYLIST_INC  ----- */
时间: 2024-10-21 20:49:38

mylist的相关文章

[C++] MyList&lt;T&gt;

完成作业型...保证无bug,完全没考虑效率. #include <iostream> using namespace std; #define DEBUG #ifdef DEBUG #define ASSERT(expr) { if (!(expr)) { cout << "=============== ASSERT(" << #expr << ") failed at line " << __LINE

List myList=new ArrayList()的理解

ArrayList不是继承List接口,是实现了List接口.你写成ArrayList arrayList = new ArrayList();这样不会有任何问题.和List list = new ArrayList();相比这2个写是有区别的.arrayList是一个ArrayList对象,它可以使用ArrayList的所有方法.List是接口,它是不可以被实例化的(接口是个抽象类),所以必须以它的实现类去实例化它.list对象虽然也是被实例化为ArrayList但是它实际是List对象,li

36.创建模板mylist

node.h 1 #pragma once 2 //创建模板 3 template <class T> 4 class Node 5 { 6 public: 7 T t;//数据 8 Node *pNext;//指针域 9 }; list.h 1 #pragma once 2 #include "Node.h" 3 #include <iostream> 4 using namespace std; 5 6 template <class T> 7

.NET编程01(泛型)

一:Object 类型:一切类型的父类,通过继承,子类拥有父类一切属性和行为:任何父类出现的地方,都可以用子类来代替: 用一个方法来完成多个方法做的事 /// <summary>    /// 普通方法类    /// </summary>    public class CommonMethod    {        /// <summary>        /// 打印个int值        /// </summary>        /// <

Jquery 实现跨域处理

JS部分代码: $.ajax({ url:url, dataType:'jsonp', data:{title:title}, jsonp:'callback', success:function(lis) { $('.mylist').html(''); var txt=''; for (x in lis) { txt=txt+'<li>'+lis[x].title+'</li>'; } $('.mylist').html(txt); } }); 后台部分代码: $title='

【自动化__持续集成】___java___List

一.代码如下 package www.wujianbotwo; import java.util.*; public class Demo07 { public static void main(String[] args) { // TODO Auto-generated method stub List mylist= new List(); } } package www.wujianbotwo; import java.util.*; public class Demo07 { publ

stl中的transform()注意其与for_each的不同点(有无返回值)

#include<iostream> using namespace std; #include"vector" #include"algorithm" #include"list" #include"functional" // void PrintV(vector <int > &temp) { for (vector<int>::iterator it = temp.begin

redis-cli命令

redis-cli 3.2.3 Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]] -h <hostname> Server hostname (default: 127.0.0.1). -p <port> Server port (default: 6379). -s <socket> Server socket (overrides hostname and port). -a <password> Pass

Python统计列表中的重复项出现的次数的方法

前言 在实际工作和学习中,经常会遇到很多重复的数据,但是我们又必须进行统计,所及这里简单介绍一下统计列表中重复项的出现次数的简单方法. 实例 本文实例展示了Python统计列表中的重复项出现的次数的方法,是一个很实用的功能,适合Python初学者学习借鉴.具体方法如下: #方法1: mylist = [1,2,2,2,2,3,3,3,4,4,4,4] myset = set(mylist)  #myset是另外一个列表,里面的内容是mylist里面的无重复 项 for item in myset