peLinkListSrc.cpp源码:
#include "peLinkListSrc.h"
#include<stdlib.h>
#define LINKLIST_SUCCESS 0
#define LINKLIST_ERROR 1
template<class T>
struct peLinkListStruct
{
T data;
peLinkListStruct<T>* nest;
};
template<class T>
class peLinkList
{
public:
peLinkList( int len );
peLinkList( int len, T *data );
peLinkList( void );
~peLinkList(void);
int Add( int data );
int Inster( int index, int data );
int Delete( int index );
public:
peLinkListStruct<T>* Head;//头指针
int Length;//链表长度
};
template<class T>
peLinkList<T>::peLinkList( void )
{
Head = (peLinkListStruct<T>*)malloc( sizeof( peLinkListStruct<T> ) );//分配内存
Head->nest = NULL;
Length = 0;
}
template<class T>
peLinkList<T>::peLinkList( int len )
{
Head = (peLinkListStruct<T>*)malloc( sizeof( peLinkListStruct<T> ) );//分配内存
Head->nest = NULL;
Length = len;
peLinkListStruct<T> *s;//新项指针
peLinkListStruct<T> *p;//牵引指针
p = Head;
for( int i = 0; i < Length; ++i )
{
s = (peLinkListStruct<T>*)malloc( sizeof( peLinkListStruct<T> ) );//分配内存
s->data = (T)0;//赋值
p->nest = s;//把牵引指针指向新项
p = s;//牵引指针后移到表尾
}//i
p->nest = NULL;
}
template<class T>
peLinkList<T>::peLinkList( int len, T *data )
{
Head = (peLinkListStruct<T>*)malloc( sizeof( peLinkListStruct<T> ) );//分配内存
Head->nest = NULL;
Length = len;
peLinkListStruct<T> *s;//新项指针
peLinkListStruct<T> *p;//牵引指针
p = Head;
for( int i = 0; i < Length; ++i )
{
s = (peLinkListStruct<T>*)malloc( sizeof( peLinkListStruct<T> ) );//分配内存
s->data = data[i];//赋值
p->nest = s;//把牵引指针指向新项
p = s;//牵引指针后移到表尾
}//i
p->nest = NULL;
}
template<class T>
peLinkList<T>::~peLinkList(void)
{
}
template<class T>
int peLinkList<T>::Add( int data )
{
peLinkListStruct<T> *p;//牵引指针
p = Head;
while( p->nest )
{
p = p->nest;
}//p
peLinkListStruct<T> *s;
s = (peLinkListStruct<T>*)malloc( sizeof( peLinkListStruct<T> ) );//分配内存
p->nest = s;
s->data = data;
s->nest = NULL;
Length += 1;
return LINKLIST_SUCCESS;
}
template<class T>
int peLinkList<T>::Inster( int index, int data )
{
peLinkListStruct<T> *s;
peLinkListStruct<T> *p;
p = Head->nest;
int i = 1;
while( p && ( i < index ) )
{
p = p->nest;
++i;
}
if( !p || i > ( index ) )
return LINKLIST_ERROR;
s = (peLinkListStruct<T>*)malloc( sizeof( peLinkListStruct<T> ) );//分配内存
s->data = data;
s->nest = p->nest;
p->nest = s;
Length += 1;
return LINKLIST_SUCCESS;
}
template<class T>
int peLinkList<T>::Delete( int index )
{
peLinkListStruct<T> *s;
peLinkListStruct<T> *p;
p = Head->nest;
int i = 1;
while( p && ( i < index ) )
{
p = p->nest;
++i;
}
if( !p || i > ( index ) )
return LINKLIST_ERROR;
s = p->nest;
p->nest = s->nest;
free( s );
Length -= 1;
return LINKLIST_SUCCESS;
}
peLinkList.cpp源码:
#include <iostream>
#include "peLinkListSrc.cpp"
using namespace std;
void main()
{
//peLinkList<int> List( 10 );
int data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
peLinkList<int> List( 10, data );
List.Add( 11 );
cout << "Element1:" << endl;
peLinkListStruct<int> *p;
p = List.Head->nest;
for( int i = 0; i < List.Length; ++i )
{
cout << i << ":"<< p->data << endl;
p = p->nest;
}//i
List.Inster( 5, 12 );
cout << "Element2:" << endl;
p = List.Head->nest;
for( int i = 0; i < List.Length; ++i )
{
cout << i << ":"<< p->data << endl;
p = p->nest;
}//i
List.Delete( 5 );
cout << "Element3:" << endl;
p = List.Head->nest;
for( int i = 0; i < List.Length; ++i )
{
cout << i << ":"<< p->data << endl;
p = p->nest;
}//i
system( "pause" );
}
程序运行结果