#include <iostream>
using namespace std;
class LinkNodeOfInt{
public:
int data;
LinkNodeOfInt *link;
LinkNodeOfInt(const int &a,LinkNodeOfInt *ptr)
{
data=a;
link=ptr;
}
LinkNodeOfInt()
{
}
};
class ListOfint{
public:
LinkNodeOfInt *head;
LinkNodeOfInt *tail;
int size;
ListOfint()
{
head=new LinkNodeOfInt(0,NULL);
tail=head;
size=0;
}
ListOfint(const ListOfint &list)
{
head=new LinkNodeOfInt(0,NULL);
LinkNodeOfInt *cur=head->link;
LinkNodeOfInt *othercur=list.head->link;
int i=0;
size=list.size;
while(othercur!=NULL)
{
LinkNodeOfInt *s=new LinkNodeOfInt(othercur->data,NULL);
if(i==0)
{
head->link=s;
cur=head->link;
}
else
{ cur->link=s;
cur=cur->link;
i++;
}
othercur=othercur->link;
}
}
void insertTotail(int value)
{
LinkNodeOfInt *p=tail;
p->link=new LinkNodeOfInt(value,NULL);
tail=p->link;
}
void inserttoHead(int value)
{
LinkNodeOfInt *p=head->link;
LinkNodeOfInt *s=new LinkNodeOfInt(value,p);
head->link=s;
}
void prt_list()
{
LinkNodeOfInt *p=head->link;
while (p)
{
cout<<p->data<<endl;
p=p->link;
}
}
LinkNodeOfInt* setPos(int pos)
{
if(pos==-1)
{
return head;
}
int count=0;
LinkNodeOfInt *p=head->link;
while(p!=NULL&&count< pos){
p=p->link;
count++;
}
return p;
}
bool insertPos(int i,int value)
{
LinkNodeOfInt *p,*q;
if(p==setPos(i-1)==NULL)
{
cout<<"the operation is illegal";
return false;
}
q=new LinkNodeOfInt(value,p->link);
p->link=q;
if(p==tail)
{
tail=q;
}
size++;
return true;
}
bool deletePos(int i)
{
LinkNodeOfInt *p ,*q;
if(p=setPos(i-1)==tail||p==tail)
{
cout<<"the operation is illegal";
return false;
}
q=p->link;
if(q==tail)
{
tail=p;
p->link=NULL;
delete q;
}
else if(q !=NULL)
{
p->link=q->link;
delete q;
}
size--;
return true;
}
int getSize()
{
return size;
}
};
单链表的基本操作
最新推荐文章于 2024-09-21 21:51:42 发布
本文详细介绍了一个基于C++实现的整数链表类的构造、插入、删除等核心操作,并提供了完整的源代码。读者可以了解到链表节点的定义、链表初始化、尾部插入、头部插入、指定位置插入及删除等功能的具体实现。
1337

被折叠的 条评论
为什么被折叠?



