//单链表 用类实现
//.............................................................
#include<iostream>
using namespace std;
//结构LNode.....................
//..............................
template<class T>
struct LNode{
T data;
LNode<T> *next;
};
//..............................
//类LinkList
//..............................
template<class T>
class LinkList
{
public:
void CreateList(int n);
void display();
void ListInsert(int i,T e);
T ListDelete(int i,T e);
T GetElem(int i);
int ListLength();
void ListEmpty();
void ListDestroy();
private:
LNode<T> *L;
};
//..............................
//类LinkList的实现
//...............................
template<class T>
void LinkList<T>::CreateList(int n)
{
L=(LNode<T>*)malloc(sizeof(LNode<T>));
L->next=NULL;
LNode<T> *p;
T e;
for(int i=n;i>0;--i)
{
p=(LNode<T>*)malloc(sizeof(LNode<T>));
cout<<"请输入元素:"<<endl;
cin>>e;
p->data=e;
p->next=L->next;
L->next=p;
}
}
template<class T>
void LinkList<T>::display()
{
LNode<T> *p;
p=L->next;
while(p)
{
cout<<p->data<<",";
p=p->next;
}
cout<<endl;
}
template<class T>
void LinkList<T>::ListInsert(int i,T e)
{
LNode<T> *p,*q;
p=L;
int j=0;
while(p&&j<i-1)
{
p=p->next;
j++;
}
if(!p||j>i-1)cout<<"false"<<endl;
q=(LNode<T>*)malloc(sizeof(LNode<T>));
q->data=e;
q->next=p->next;
p->next=q;
}
template<class T>
T LinkList<T>::ListDelete(int i,T e)
{
LNode<T> *p,*q;
p=L;
int j=0;
while(p&&j<i-1)
{
p=p->next;
j++;
}
if(!p||j>i-1)cout<<"false"<<endl;
q=p->next;
p->next=q->next;
e=q->data;
free(q);
return e;
}
template<class T>
T LinkList<T>::GetElem(int i)
{
LNode<T> *p;
T e;
p=L->next;
int j=1;
while(p&&j<i)
{
p=p->next;
j++;
}
if(!p||j>i)cout<<"false"<<endl;
e=p->data;
return e;
}
template<class T>
int LinkList<T>::ListLength()
{
LNode<T> *p;
p=L->next;
int j=0;
if(!p)cout<<"false"<<endl;
while(p)
{
p=p->next;
j++;
}
return j;
}
template<class T>
void LinkList<T>::ListEmpty()
{
if(!L)cout<<"此链表为空!!!"<<endl;
else
cout<<"此链表不为空!!!"<<endl;
}
template<class T>
void LinkList<T>::ListDestroy()
{
LNode<T> *p;
p=L;
while(p)
{
p=p->next;
free(L);
L=p;
}
}
//...............................
//main 函数
//...............................
void main()
{
LinkList<int > L1;
int n,e;
cout<<"请输入要输入的元素的个数:"<<endl;
cin>>n;
L1.CreateList(n);
L1.display();
L1.ListInsert(3,9);
L1.display();
cout<<L1.GetElem(3)<<endl;
cout<<L1.ListLength()<<endl;
L1.ListDelete(3,e);
L1.display();
L1.ListDestroy();
L1.ListEmpty();
}
//...............................
//........................................................................
//.............................................................
#include<iostream>
using namespace std;
//结构LNode.....................
//..............................
template<class T>
struct LNode{
T data;
LNode<T> *next;
};
//..............................
//类LinkList
//..............................
template<class T>
class LinkList
{
public:
void CreateList(int n);
void display();
void ListInsert(int i,T e);
T ListDelete(int i,T e);
T GetElem(int i);
int ListLength();
void ListEmpty();
void ListDestroy();
private:
LNode<T> *L;
};
//..............................
//类LinkList的实现
//...............................
template<class T>
void LinkList<T>::CreateList(int n)
{
L=(LNode<T>*)malloc(sizeof(LNode<T>));
L->next=NULL;
LNode<T> *p;
T e;
for(int i=n;i>0;--i)
{
p=(LNode<T>*)malloc(sizeof(LNode<T>));
cout<<"请输入元素:"<<endl;
cin>>e;
p->data=e;
p->next=L->next;
L->next=p;
}
}
template<class T>
void LinkList<T>::display()
{
LNode<T> *p;
p=L->next;
while(p)
{
cout<<p->data<<",";
p=p->next;
}
cout<<endl;
}
template<class T>
void LinkList<T>::ListInsert(int i,T e)
{
LNode<T> *p,*q;
p=L;
int j=0;
while(p&&j<i-1)
{
p=p->next;
j++;
}
if(!p||j>i-1)cout<<"false"<<endl;
q=(LNode<T>*)malloc(sizeof(LNode<T>));
q->data=e;
q->next=p->next;
p->next=q;
}
template<class T>
T LinkList<T>::ListDelete(int i,T e)
{
LNode<T> *p,*q;
p=L;
int j=0;
while(p&&j<i-1)
{
p=p->next;
j++;
}
if(!p||j>i-1)cout<<"false"<<endl;
q=p->next;
p->next=q->next;
e=q->data;
free(q);
return e;
}
template<class T>
T LinkList<T>::GetElem(int i)
{
LNode<T> *p;
T e;
p=L->next;
int j=1;
while(p&&j<i)
{
p=p->next;
j++;
}
if(!p||j>i)cout<<"false"<<endl;
e=p->data;
return e;
}
template<class T>
int LinkList<T>::ListLength()
{
LNode<T> *p;
p=L->next;
int j=0;
if(!p)cout<<"false"<<endl;
while(p)
{
p=p->next;
j++;
}
return j;
}
template<class T>
void LinkList<T>::ListEmpty()
{
if(!L)cout<<"此链表为空!!!"<<endl;
else
cout<<"此链表不为空!!!"<<endl;
}
template<class T>
void LinkList<T>::ListDestroy()
{
LNode<T> *p;
p=L;
while(p)
{
p=p->next;
free(L);
L=p;
}
}
//...............................
//main 函数
//...............................
void main()
{
LinkList<int > L1;
int n,e;
cout<<"请输入要输入的元素的个数:"<<endl;
cin>>n;
L1.CreateList(n);
L1.display();
L1.ListInsert(3,9);
L1.display();
cout<<L1.GetElem(3)<<endl;
cout<<L1.ListLength()<<endl;
L1.ListDelete(3,e);
L1.display();
L1.ListDestroy();
L1.ListEmpty();
}
//...............................
//........................................................................