数据结构——链表的C++实现

来源:互联网 发布:淘宝店铺店招类型 编辑:程序博客网 时间:2024/04/30 01:45

peLinkListSrc.cpp源码:

#include "peLinkListSrc.h"#include<stdlib.h>#define LINKLIST_SUCCESS0#define LINKLIST_ERROR1template<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;//牵引指针后移到表尾}//ip->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;//牵引指针后移到表尾}//ip->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;}//ppeLinkListStruct<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;}//iList.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;}//iList.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;}//isystem( "pause" );}

程序运行结果


0 0
原创粉丝点击