欢迎来到天天文库
浏览记录
ID:16510994
大小:25.00 KB
页数:4页
时间:2018-08-10
《c++不带表头结点的线性链表的实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#includeusingnamespacestd;structNode{intdata;Node*next;};classlinklist{public:Node*head;linklist(){head=NULL;}~linklist();Node*GetElemPtr(intposition);intLength();boollinklist::Empty();voidClear();voidtraverse();voidgetelme(intposition,int&e);
2、voidsetelme(intposition,inte);voidInsert(intposition,inte);voidDelete(intposition,int&e);};linklist::~linklist(){Clear();deletehead;}boollinklist::Empty(){returnhead==NULL;}Node*linklist::GetElemPtr(intposition){Node*tmpPtr=head;intcurposition=1;while(t
3、mpPtr!=NULL&&curpositionnext;curposition++;}if(tmpPtr!=NULL&&curposition==position){returntmpPtr;}else{returnNULL;}}intlinklist::Length(){intcount=0;Node*tmpPtr;for(tmpPtr=head;tmpPtr!=NULL;tmpPtr=tmpPtr->next){count++;}returnc
4、ount;}voidlinklist::Clear(){inte;while(Length()>0)Delete(1,e);}voidlinklist::traverse(){for(Node*tmpPtr=head;tmpPtr!=NULL;tmpPtr=tmpPtr->next)cout<data<<"";cout<5、ition);e=tempPtr->data;}voidlinklist::setelme(intposition,inte){Node*tempPtr=GetElemPtr(position);tempPtr->data=e;}voidlinklist::Insert(intposition,inte){Node*newPtr,*tmpPtr;if(position>1){tmpPtr=GetElemPtr(position-1);newPtr=newNode;newPtr->data=e;newP6、tr->next=tmpPtr->next;tmpPtr->next=newPtr;}if(position==1){newPtr=newNode;newPtr->data=e;newPtr->next=head;head=newPtr;}}voidlinklist::Delete(intposition,int&e){Node*tmpPtr;if(position>1){tmpPtr=GetElemPtr(position-1);cout<<"删除的元素为:"<next->data7、<next;tmpPtr->next=nextPtr->next;e=nextPtr->data;deletenextPtr;}if(position==1){tmpPtr=head;head=head->next;deletetmpPtr;}}intmain(){intc=0;linklistla,lb;inte;intposition;while(c!=5){cout<<"1.生成线性表"<8、;cout<<"3.在线性表中插入一个数据"<>c;switch(c){case1:cout<<"输入e(e=0时退出):";cin>>e;while(e!=0){la.Insert(la.Length()+1,e);cout<<"输入e(e=0时退出):";cin>>e;}break;case2:la.traverse();break;ca
5、ition);e=tempPtr->data;}voidlinklist::setelme(intposition,inte){Node*tempPtr=GetElemPtr(position);tempPtr->data=e;}voidlinklist::Insert(intposition,inte){Node*newPtr,*tmpPtr;if(position>1){tmpPtr=GetElemPtr(position-1);newPtr=newNode;newPtr->data=e;newP
6、tr->next=tmpPtr->next;tmpPtr->next=newPtr;}if(position==1){newPtr=newNode;newPtr->data=e;newPtr->next=head;head=newPtr;}}voidlinklist::Delete(intposition,int&e){Node*tmpPtr;if(position>1){tmpPtr=GetElemPtr(position-1);cout<<"删除的元素为:"<next->data
7、<next;tmpPtr->next=nextPtr->next;e=nextPtr->data;deletenextPtr;}if(position==1){tmpPtr=head;head=head->next;deletetmpPtr;}}intmain(){intc=0;linklistla,lb;inte;intposition;while(c!=5){cout<<"1.生成线性表"<8、;cout<<"3.在线性表中插入一个数据"<>c;switch(c){case1:cout<<"输入e(e=0时退出):";cin>>e;while(e!=0){la.Insert(la.Length()+1,e);cout<<"输入e(e=0时退出):";cin>>e;}break;case2:la.traverse();break;ca
8、;cout<<"3.在线性表中插入一个数据"<>c;switch(c){case1:cout<<"输入e(e=0时退出):";cin>>e;while(e!=0){la.Insert(la.Length()+1,e);cout<<"输入e(e=0时退出):";cin>>e;}break;case2:la.traverse();break;ca
此文档下载收益归作者所有