C++写的一个List<T>
#include "stdafx.h"
#include <iostream>
using namespace std;
template<typename T>
struct Node
{
T value;
Node* next;
Node* pre;
};
template<typename T>
class List
{
private:
Node<T>* head;
Node<T>* current;
Node<T>* create;
int number ;
public:
List()
{
head=new Node<T>();
head->next=NULL;
head->pre=NULL;
current=head;
number=0;
}
~List(){
Node<T> * temp=current;
while (temp->next!=NULL)
{
temp=temp->next;
delete(temp->pre);
}
if (temp->next==NULL)
{
delete(temp);
}
cout<<"析构完成"<<endl;
}
void Add(T a)
{
create=new Node<T>();
create->value=a;
create->next=current;
create->pre=NULL;
current->pre=create;
current=create;
number++;
}
bool Contains(T a){
Node<T> * temp=current;
bool ret=false;
while (temp->next!=NULL)
{
if (temp->value==a)
{
ret=true;
break;
}
temp=temp->next;
}
return ret;
}
void Remove(T a){
Node<T> * temp=current;
while (temp->next!=NULL)
{
if (temp->value==a)
{
number--;
if (temp->pre!=NULL)
{
temp->pre->next=temp->next;
temp->next->pre=temp->pre;
delete(temp);
}
else
{
current=current->next;
delete(temp);
}
break;
}
else
{
temp=temp->next;
}
}
}
void Display()
{
Node<T> * temp=current;
while (temp->next!=NULL)
{
cout<<temp->value<<endl;
temp=temp->next;
}
}
int getNumber(){
return number;
}
};
void Test()
{
List<int> *p=new List<int>();
for (int i=0;i<3553;i++)
{ p->Add(i);
}
p->Display();
cout<<"个数:"<<p->getNumber()<<endl;
getchar();
cout<<p->Contains(333)<<endl;
delete(p);
}
int main()
{
Test();
getchar();
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!