以下为tlist.h文件代码
/*
* File: tlist.h
* Author: root
*
* Created on 2008年12月1日, 下午9:46
*/
#ifndef _TLIST_H
#define _TLIST_H
#include <list>
class TList {
public:
TList();
TList(const TList& orig);
virtual ~TList();
public:
bool Add(void* data);
bool Remove(void* data);
bool IsEmpty();
bool Insert(int location,void* data);
void* Front();
void* Last();
void* GetElem(int location);
int Count();
void Free();
private:
std::list<void*> list;
};
#endif /* _TLIST_H */
以下为实现tlist.cpp文件代码
/*
* File: tlist.cpp
* Author: root
*
* Created on 2008年12月1日, 下午9:46
*/
#include "tlist.h"
//------------------------------------------------------------
TList::TList()
{
}
//------------------------------------------------------------
TList::TList(const TList& orig)
{
}
//------------------------------------------------------------
//插入结点
bool TList::Add(void* data)
{
list.push_back(data);
return true;
}
//------------------------------------------------------------
bool TList::Remove(void* data)
{
if(IsEmpty())
{
return false;
}
else
{
list.remove(data);
return true;
}
}
//------------------------------------------------------------
bool TList::IsEmpty()
{
if(list.empty())
return true;
else
false;
}
//------------------------------------------------------------
bool TList::Insert(int location, void* data)
{
}
//------------------------------------------------------------
void* TList::Front()
{
if(IsEmpty())
return NULL;
else
return list.front();
}
//------------------------------------------------------------
void* TList::Last()
{
if(IsEmpty())
return NULL;
else
return list.back();
}
//------------------------------------------------------------
void* TList::GetElem(int location)
{
}
//------------------------------------------------------------
int TList::Count()
{
int count = 0;
if(IsEmpty())
count = 0;
else
count = list.size();
return count;
}
//------------------------------------------------------------
void TList::Free()
{
list.clear();
}
//------------------------------------------------------------
TList::~TList()
{
Free();
}
//------------------------------------------------------------
以下为newmain.cpp测试代码
/*
* File: newmain.cpp
* Author: root
*
* Created on 2008年12月3日, 下午9:09
*/
#include <stdlib.h>
#include "tlist.h"
#include <iostream>
using namespace std;
/*
*
*/
typedef struct
{
int a;
char item[1024];
}Data;
int main(int argc, char** argv) {
TList* list = new TList();
Data* data = new Data();
data->a = 10;
strcpy(data->item,"abc");
bool status = list->Add((void*)data);
if(status)
cout << "Add data successful" << endl;
else
cout << "Add data failure" << endl;
Data*d = new Data();
d->a = 100;
strcpy(d->item,"ddddddddd");
status = list->Add((void*)d);
if(status)
cout << "Add data successful" << endl;
else
cout << "Add data failure" << endl;
Data* data1;
data1 = (Data*) list->Front();
cout << "a = " << data1->a << endl;
cout << "item = " << data->item << endl;
Data* d1;
d1 = (Data*) list->Last();
cout << "a = " << d1->a << endl;
cout << "item = " << d1->item << endl;
list->Remove(data);
cout << "count = " << list->Count() << endl;
Data* dd;
dd = (Data*)list->Front();
cout << "a = " << dd->a << endl;
cout << "item = " << dd->item << endl;
return (EXIT_SUCCESS);
}
分享到:
相关推荐
- **list**:双向链表,支持快速的插入和删除,但随机访问较慢。 - **set**:自平衡二叉查找树(红黑树),存储唯一元素并保持排序。 - **multiset**:与set类似,但允许存储重复元素。 - **map**:键值对的自...
安全地遍历链表,支持 RCU 读取锁,适用于并发环境下的链表遍历。 #### 4. hlist(hash list) ##### 4.1. hlist(hash list)结构 **4.1.1. 简述** `hlist` 是一种基于哈希表的链表结构,用于高效地存储和查找...
这些链表大多采用在 [include/linux/list.h] 实现的一个相当精彩的链表数据结构。 五、单链表的实现 单链表的节点类的声明如下: ```cpp template<class T> class Node { public: T data; // 数据 Node<T> *...
- `list` 和 `deque` 也是顺序容器,但它们在内部实现上不同于`vector`,`list`使用双向链表,`deque`使用分块数组。 - `bitset` 提供位操作,其中0是最低位,n-1是最高位,与常规整数表示相反。 5. **C++编译...
- **2.1.1 TList类**:一种链表数据结构,用于存储和管理一组元素。 - **2.1.2 AnsiString类**:用于处理Ansi字符串,即非Unicode字符。 - **2.1.3 Set(集合)**:一种无序且不重复的数据集合。 - **2.1.4 ...
- **vector**, **list**, **deque**:C++标准模板库(STL)的一部分,提供了动态数组、双向链表和双端队列等数据结构。 - **algorithm**:包含了大量的算法,如排序、搜索、迭代等,提高了编程效率。 - **string**:...
在C++中,这可能是通过`std::list, Value>>`或者自定义的节点结构来实现。 插入操作(Insertion)通常涉及计算键的哈希值,找到对应的桶,并将键值对添加到该桶的链表或树中。删除操作(Deletion)则需要找到特定...
`list<T>`是一个双向链表,支持快速的插入和删除操作。例如,创建一个包含整数的链表: ```cpp #include <list> std::list<int> intList; intList.push_back(1); intList.push_back(2); ``` 散列(Hash)在STL中...
这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! 如题。详细见源码。 GMem 内存管理单元源码。GMem.cpp...
STL是一种通用编程范式下的高效C++程序库,它被包含在C++标准程序库中。这一库集成了计算机科学领域内的许多基本数据结构和算法,通过高度抽象化的设计理念实现了良好的可扩展性和可复用性。 ##### 1.2 STL的历史 -...
- `void *` 是一种通用指针类型,可以指向任何类型的对象。 - **重要性**: - 在函数参数列表中使用 `void` 表示函数不接受任何参数。 - `void *` 可用于实现函数模板,增加代码的灵活性和复用性。 - **示例**: ...
4. ccpaging建议改掉qqqun这个结构名,我打算下个版本把它改为qun_t,其它类似如 member_t, group_t, buddy_t。 5. 具备登录输入验证码功能,验证码图片保存在web/verify目录下。 6. 修正qqsocket里接收数据溢出。 ...
本实训报告的目标是通过实现两种不同的数据结构——顺序表(SqList)和循环链表(LinkList),来解决约瑟夫问题。 **1.2 需求环境** 项目开发环境主要包括但不限于: - **操作系统**:Windows 或 Linux。 - **编程语言*...
- 使用**链表**:也可以使用单链表或双链表来实现,链表的优点在于插入和删除操作更为高效,不需要考虑数组扩容的问题。 3. **C++代码示例**: - 基于数组实现的简单队列类: ```cpp template <typename T> ...
5. **集合**:C#提供了丰富的集合类,如List<T>、Dictionary<TKey, TValue>等,它们实现了各种数据结构,如数组、链表和哈希表。 6. **异常处理**:通过try-catch块,C#支持异常处理,允许程序在出现错误时优雅地...
**`List<T>`的底层实现**: 1. **数组实现**:`List<T>`内部维护了一个动态数组`items`来存储元素。 2. **容量调整**:当添加新元素导致数组容量不足时,`List<T>`会自动扩展数组大小(通常为当前大小的1.5倍或2倍...