数据结构用C++类模板创建链表,插入,删除,输出,怎么初始化对象

#include<iostream>usingnamespacestd;template<classT>classLink{public:Tdata;Link<T>*ne... #include<iostream>
using namespace std;
template <class T>
class Link
{
public:
T data;
Link <T> *next;
Link(const T info,const Link<T> *nextvalue=NULL)
{
data=info;
next=nextvalue;
}
Link(const Link<T> *nextvalue)
{
next=nextvalue;
}
};
template <class T>
class lnkList: public Link <T>
{
private:
Link<T> *head,*tail;
Link<T> *setPos(const int i);
public:
lnkList(int defSize)
{
head=tail=new Link<T>;
}
~lnkList()
{
Link<T> *temp;
while(head!=NULL)
{
tmp=head;
head=head->next;
delete tmp;
}
}
bool append(const T value);
void show();
bool getPos(int &p,const T value);
bool insert(const int p,const T value);
bool deletea(const int p);
};
template <class T>
Link<T> * lnkList <T>::setPos(const int i)
{
int count=0;
if(i==1)
return head;
Link<T> *p=new Link<T>(head->next);
while(p!=NULL&& count<i)
{
p=p->next;
count++;
}
return p;
}
template <class T>
bool lnkList<T>::append(const T value)
{
Link <T> *q;
Link <T>*p=new Link<T>(head->next);
q=new Link <T>(value,p->next);
p->data=value;
p=q;

}
template <class T>
void lnkList<T>::show()
{
Link <T>*p=new Link<T>(head->next);
while(p!=NULL)
{
cout<<p->data<<" ";
p=p->next;
}
}
template <class T>
bool lnkList<T>::insert(const int p,const T value)
{
Link <T> *q,*r;
if(q=setPos(p-1)==NULL)
{
cout<<"非法插入!"<<endl;
return false;
}
r=new Link <T>(value,q->next);
q->next=r;
if(q==tail)
tail=r;
return true;
}
template <class T>
bool lnkList<T>::deletea(const int p)
{
Link <T> *q,*r;
if((q=setPos(p-1))==NULL||q=tail)
{
cout<<"非法删除点"<<endl;
return false;
}
r=q->next;
if(r==tail)
{
tail=q;
q->next=NULL;
delete r;
}
return true;
}
int main()
{
int length,value,i;
cout<<endl<<"所创建的链表的长度:";
cin>>length;
lnkList<int> a();
for(i=0;i<length;i++)
{
cin>>value;
a.append(value);
}
cout<<endl<<"当前链表的结点:";
a.show();
return 0;
}
展开
 我来答
zx198799
2014-12-12 · TA获得超过1225个赞
知道小有建树答主
回答量:509
采纳率:100%
帮助的人:282万
展开全部

我替你改了一些bug

#include<iostream>
using namespace std;
template <class T>
class Link
{
public:
T data;
Link <T> *next;
Link(const T info, Link<T> *nextvalue=NULL)
{
data=info;
next=nextvalue;
}
Link(Link<T> *nextvalue)
{
next=nextvalue;
}
Link()
{
}
};
template <class T>
class lnkList: public Link <T>
{
private:
Link<T> *head,*tail;
Link<T> *setPos(const int i);
public:
lnkList()
{
head=tail=new Link<T>;
}
~lnkList()
{
Link<T> *tmp;
while(head!=NULL)
{
tmp=head;
head=head->next;
delete tmp;
}
}
bool append(const T value);
void show();
bool getPos(int &p,const T value);
bool insert(const int p,const T value);
bool deletea(const int p);
};
template <class T>
Link<T> * lnkList <T>::setPos(const int i)
{
int count=0;
if(i==1)
return head;
Link<T> *p=new Link<T>(head->next);
while(p!=NULL&& count<i)
{
p=p->next;
count++;
}
return p;
}
template <class T>
bool lnkList<T>::append(const T value)
{
Link <T> *q;
Link <T>*p=new Link<T>(head->next);
q=new Link <T>(value,p->next);
p->data=value;
p=q;
return true;
}
template <class T>
void lnkList<T>::show()
{
Link <T>*p=new Link<T>(head->next);
while(p!=NULL)
{
cout<<p->data<<" ";
p=p->next;
}
}
template <class T>
bool lnkList<T>::insert(const int p,const T value)
{
Link <T> *q,*r;
if(q=setPos(p-1)==NULL)
{
cout<<"非法插入!"<<endl;
return false;
}
r=new Link <T>(value,q->next);
q->next=r;
if(q==tail)
tail=r;
return true;
}
template <class T>
bool lnkList<T>::deletea(const int p)
{
Link <T> *q,*r;
if((q=setPos(p-1))==NULL||q=tail)
{
cout<<"非法删除点"<<endl;
return false;
}
r=q->next;
if(r==tail)
{
tail=q;
q->next=NULL;
delete r;
}
return true;
}
int main()
{
int length,value,i;
cout<<endl<<"所创建的链表的长度:";
cin>>length;
lnkList<int> a;
for(i=0;i<length;i++)
{
cin>>value;
a.append(value);
}
cout<<endl<<"当前链表的结点:";
a.show();
return 0;
}
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式