单链表的实现 template class LinkList { public: LinkList(); LinkList(T a[],int n); ~LinkList(); int Length(); DataType Get(int i); int Locate(DataType x); void PrintList(); private: Node*first; }; 单链表遍历算法PrintList template void LinkList::PrintList() { p=first->next; while(p!=NULL) { cout<data; p=p->next; } } 求线性表长度算法Length template int linkList::Length() { p=first->next;count=0; while(p!=NULL) { p=p->next; count++; } return count; } 按位查找算法Get template DataType LinkList::Get(int i) { p=first->next;count=1; while(p!=NULL&&count<i) { p=p->next; count++; } if(pNULL)throw"位置"; elae return p->data; } 按值查找算法Locate template DataType LinkList::Lacate(DataType x) {pfirst->next;count=1; while(p!=NULL) { if(p->datax)return count; p=p->next; count++; } return 0; } 插入算法Insert template void LinkList::Insert(int i,DataType x) { p=first;count=0; while(p!=NULL&&count<i-1) { p=p->next; count++; } if(p==NULL)throw"位置"; else{
s=new Node;s->data=x; s->next=p->next;p->next=s; }} 无参构造函数LinkList template LinkList::LinkList() { first=new Node; first->next=NULL; } 头插法建立单链表LinkList template LinkList::LinkList(DataType a[],int n; { first=new Node;first->next=NULL; for(i=0;i<n;i++) { s=new Node;s->data=a[i]; s->next=first-next;first-next=s; } } 单链表删除算法Delete template DataType LinkList::Delete(int i) { p=first;count=0; while(p!=NULL&&count<i-1) { p=p->next; count++; } if(pNULL||p->nextNULL) throw"位置"; else{ q=p->next;x=q->data; p->next=q->next; delete q; return x; } } 单链表析构函数算法~LinkList template LinkList::~LinkList() { Node*q; while(first!=NULL) { q=first; first=first->next; delete q; }