#include <iostream>
using namespace std;
template <class DataType>
struct Node
{
DataType data;
Node<DataType> *next;
};
template <class DataType>
class LinkList
{
public:
LinkList();
LinkList(DataType a[],int n);
~LinkList();
int Length();
DataType Get(int i);
int Locate(DataType x);
void Insert(int i,DataType x);
DataType Delete(int i);
void PrintList();
private:
Node<DataType> *first;
};
template <class DataType>
LinkList<DataType>::LinkList()
{
first = new Node<DataType>;
first->next=NULL;
}
/*template<class DataType>
LinkList<DataType>::LinkList(DataType a[],int n)//頭插法
{
first->next=NULL;
for(int i=0;i<n;i++)
{
Node<DataType> *s=new Node<DataType>;
s->data=https://bbs.csdn.net/topics/a[i];
s->next=first->next;
first->next=s;
}
}*/
template<class DataType>
LinkList<DataType>::LinkList(DataType a[],int n)//尾插法
{
first->next=NULL;
Node<DataType> *r=first;
for(int i=0;i<n;i++)
{
Node<DataType> *s=new Node<DataType>;
s->data=https://bbs.csdn.net/topics/a[i];
r->next=s;
r=s;
}
r->next=NULL;
}
template<class DataType>
int LinkList<DataType>::Length()
{ Node<DataType> *p=first->next;
int Count=0;
while(p!=NULL)
{ p=p->next;
Count++;
}
return Count;
}
template<class DataType>
DataType LinkList<DataType>::Get(int i)
{ Node<DataType> *p=first->next;
int Count=1;
while(p!=NULL&&Count<i)
{
p=p->next;
Count++;
}
if(p==NULL)throw "位置";
else
return p->data;
}
template<class DataType>
int LinkList<DataType>::Locate(DataType x)
{ int Count=1;
Node<DataType> p=first->next;
while(p!=NULL)
{
if(p->data=https://bbs.csdn.net/topics/=x) return Count;
p=p->next;
Count++;
}
return 0;
}
template<class DataType>
void LinkList<DataType>::Insert(int i,DataType x)
{
Node<DataType> *p=first;
int Count=0;
while(p!=NULL&&Count<i-1)
{
p=p->next;
Count++;
}
if(p==NULL)
throw "插入位置例外";
else
{
Node<DataType> *s=new Node<DataType>;
s->data=https://bbs.csdn.net/topics/x;
s->next=p->next;
p->next=s;
}
}
template<class DataType>
DataType LinkList<DataType>::Delete(int i)
{
Node<DataType> *p=first;
int Count=1;
while(p!=NULL&&Count<i-1)
{
p=p->next;
Count++;
}
if(p==NULL||p.next==NULL)
cout<<"位置錯誤";
else
{ Node<DataType> *q=p->next;
int x=q->data;
p->next=q->next;
delete q;
return x;
}
}
template<class DataType>
void LinkList<DataType>::PrintList()
{
Node<DataType> *p=first;
while(p!=NULL)
{
p=p->next;
cout<<p->data<<" ";
}
}
template<class DataType>
LinkList<DataType>::~LinkList()
{ Node<DataType> *q;
while(first!=NULL)
{
q=first;
first=first->next;
delete q;
}
}
int main()
{
int a[5]={1,2,5,8,5},b[5]={2,5,9,7,6};
LinkList<int> List_1=LinkList<int>(a,5);
LinkList<int> List_2=LinkList<int>(b,5);
List_1.PrintList();
return 0;
}
uj5u.com熱心網友回復:
LinkList<DataType>::LinkList(DataType a[],int n)//頭插法在這個函式中沒有對 first 賦值
template<class DataType>
LinkList<DataType>::LinkList(DataType a[],int n)//頭插法
{ first=new Node<DataType>;
first->data=https://bbs.csdn.net/topics/a[0];
Node<DataType> *r=first;
for(int i=1;i<n;i++)
{ Node<DataType> *s=new Node<DataType>;
s->data=https://bbs.csdn.net/topics/a[i];
r->next=s;r=s;
}
r->next=NULL;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/47631.html
標籤:基礎類
上一篇:c++builder COM型別庫的呼叫出現記憶體錯誤
下一篇:C語言程式設計
