list和vector和stack的实现实例文档格式.docx

上传人:b****3 文档编号:7555176 上传时间:2023-05-08 格式:DOCX 页数:85 大小:34.20KB
下载 相关 举报
list和vector和stack的实现实例文档格式.docx_第1页
第1页 / 共85页
list和vector和stack的实现实例文档格式.docx_第2页
第2页 / 共85页
list和vector和stack的实现实例文档格式.docx_第3页
第3页 / 共85页
list和vector和stack的实现实例文档格式.docx_第4页
第4页 / 共85页
list和vector和stack的实现实例文档格式.docx_第5页
第5页 / 共85页
list和vector和stack的实现实例文档格式.docx_第6页
第6页 / 共85页
list和vector和stack的实现实例文档格式.docx_第7页
第7页 / 共85页
list和vector和stack的实现实例文档格式.docx_第8页
第8页 / 共85页
list和vector和stack的实现实例文档格式.docx_第9页
第9页 / 共85页
list和vector和stack的实现实例文档格式.docx_第10页
第10页 / 共85页
list和vector和stack的实现实例文档格式.docx_第11页
第11页 / 共85页
list和vector和stack的实现实例文档格式.docx_第12页
第12页 / 共85页
list和vector和stack的实现实例文档格式.docx_第13页
第13页 / 共85页
list和vector和stack的实现实例文档格式.docx_第14页
第14页 / 共85页
list和vector和stack的实现实例文档格式.docx_第15页
第15页 / 共85页
list和vector和stack的实现实例文档格式.docx_第16页
第16页 / 共85页
list和vector和stack的实现实例文档格式.docx_第17页
第17页 / 共85页
list和vector和stack的实现实例文档格式.docx_第18页
第18页 / 共85页
list和vector和stack的实现实例文档格式.docx_第19页
第19页 / 共85页
list和vector和stack的实现实例文档格式.docx_第20页
第20页 / 共85页
亲,该文档总共85页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

list和vector和stack的实现实例文档格式.docx

《list和vector和stack的实现实例文档格式.docx》由会员分享,可在线阅读,更多相关《list和vector和stack的实现实例文档格式.docx(85页珍藏版)》请在冰点文库上搜索。

list和vector和stack的实现实例文档格式.docx

{

public:

list_item(elemTypevalue,list_item*item=0):

_value(value)

{

if(!

item)

_next=0;

else

{

_next=item->

_next;

item->

_next=this;

}

}

elemTypevalue(){return_value;

list_item*next(){return_next;

voidnext(list_item*link){_next=link;

voidvalue(elemTypenew_value){_value=new_value;

private:

elemType_value;

list_item*_next;

};

 

classlist

list():

_at_front(0),_at_end(0),_current(0),_size(0){}

list(constlist&

);

list&

operator=(constlist&

~list(){remove_all();

voidinsert(list_item<

elemType>

*ptr,elemTypevalue);

voidinsert_end(elemTypevalue);

voidinsert_front(elemTypevalue);

voidinsert_all(constlist&

rhs);

intremove(elemTypevalue);

voidremove_front();

voidremove_all();

list_item<

*find(elemTypevalue);

*next_iter();

*init_iter(list_item<

*it);

voiddisplay(ostream&

os=cout);

voidconcat(constlist&

voidreverse();

intsize();

voidbump_up_size();

voidbump_down_size();

*_at_front;

*_at_end;

*_current;

int_size;

inlinelist_item<

*list<

:

next_iter()

*next=_current?

_current=_current->

next():

_current;

returnnext;

}

init_iter(list_item<

*it)

return_current=it?

it:

_at_front;

inlinelist<

list(constlist<

&

rhs):

_at_front(0),_at_end(0)

{

insert_all(rhs);

&

list<

operator=(constlist<

rhs)

if(this!

=&

remove_all();

insert_all(rhs);

return*this;

inlinevoidlist<

bump_up_size(){++_size;

bump_down_size(){--_size;

inlineintlist<

size(){return_size;

insert(list_item<

*ptr,elemTypevalue)

if(!

ptr)

insert_front(value);

else

bump_up_size();

newlist_item<

(value,ptr);

insert_front(elemTypevalue)

*ptr=newlist_item<

(value);

_at_front)

_at_front=_at_end=ptr;

ptr->

next(_at_front);

_at_front=ptr;

bump_up_size();

insert_end(elemTypevalue)

_at_end)

_at_end=_at_front=newlist_item<

_at_end=newlist_item<

(value,_at_end);

list_item<

find(elemTypevalue)

*ptr=_at_front;

while(ptr)

if(ptr->

value()==value)

break;

ptr=ptr->

next();

returnptr;

voidlist<

display(ostream&

os)

os<

<

"

\n("

<

_size<

)("

;

while(ptr)

os<

ptr->

value()<

)\n"

remove_front()

if(_at_front)

list_item<

_at_front=_at_front->

if(_current==ptr)

_current=_at_front;

bump_down_size();

deleteptr;

remove_all()

while(_at_front)

remove_front();

_size=0;

_at_front=_at_end=0;

intlist<

remove(elemTypevalue)

*plist=_at_front;

intelem_cnt=0;

while(plist&

plist->

plist=plist->

++elem_cnt;

plist)

returnelem_cnt;

*prev=plist;

plist=plist->

while(plist)

if(plist->

prev->

next(plist->

next());

if(_current==plist)

_current=prev->

deleteplist;

++elem_cnt;

bump_down_size();

plist=prev->

if(!

{

_at_end=prev;

returnelem_cnt;

}

else

prev=plist;

plist=plist->

returnelem_cnt;

concat(constlist<

il)

*ptr=il._at_front;

insert_end(ptr->

value());

reverse()

*prev=0;

_at_front=_at_end;

_at_end=ptr;

while(ptr!

=_at_front)

*tmp=ptr->

next(prev);

prev=ptr;

ptr=tmp;

_at_front->

insert_all(constlist<

rhs)

*pt=rhs._at_front;

while(pt)

insert_end(pt->

pt=pt->

intmain()

charbuf[10]="

ygt"

charbuf1[10]="

mylist;

for(inti=0;

i<

10;

i++)

sprintf(buf,"

ygt%d"

i+1);

mylist.insert_front(buf);

mylist.insert_end(buf);

mylist.display();

//用迭代器打印

*cur=mylist.find("

ygt6"

);

*iter;

cout<

endl;

for(iter=mylist.init_iter(cur);

iter;

iter=mylist.next_iter())

cout<

iter->

mylist1;

ygt%c"

i+'

A'

mylist1.display();

mylist.concat(mylist1);

mylist.reverse();

return0;

#endif

classilist_item

ilist_item(intvalue,ilist_item*item_to_link_to=0);

//

intvalue(){return_value;

}//返回_value值

ilist_item*next(){return_next;

}//返回_next指针

voidnext(ilist_item*link){_next=link;

}//给_next指针赋值使_next指向link

voidvalue(intnew_value){_value=new_value;

}//给_value赋值

int_value;

//数据值

ilist_item*_next;

//下一个ilist_item

inlineilist_item:

ilist_item(intvalue,ilist_item*item):

_value(value)

_next=0;

_next=item->

item->

//下面是int型的链表上面是链表模板支持很多类型

classilist

ilist():

_at_front(0),_at_end(0),_size(0){}//

ilist(constilist&

//用链表初始化链表

//返回_size链表长度

voidinsert(ilist_item*ptr,intvalue);

//如果ptr为空从头加入,否则加入prt后面

voidinsert_front(intvalue);

//加到链表头前

voidinsert_end(intvalue);

//从链表尾加入一个节点其值为value

ilist_item*find(intvalue);

//通过节点值查找链表节点

os=cout);

//从链表头遍历到链表尾打印其值

//从链表头开始删除一个节点

//从链表头删除所有节点

intremove(intvalue);

//删除所有节点值是value的节点

voidconcat(constilist&

il);

//从链表尾把il链表追加到本链表

//翻转链表节点,倒序链表

ilist_item*init_iter(ilist_item*it=0);

//初始化迭代器

ilist_item*next_iter();

//下一个元素

ilist&

operator=(constilist&

//赋值重载

voidinsert_all(constilist&

//从链表尾依次把链表rhs追加入链表

//_size链表长度加1

//_size链表长度减1

ilist_item*_at_front;

//指向头

ilist_item*_at_end;

//指向尾

ilist_item*_current;

//当前指针

//链表长度

inlineilist_item*ilist:

ilist_item*next=_current?

init_iter(ilist_item*it)

inlineilist:

ilist(constilist&

inlineilist&

ilist:

operator=(constilist&

inlinevoidilist:

inlineintilist:

insert(ilist_item*ptr,intvalue)

newilist_item(value,ptr);

insert_front(intvalue)

ilist_item*ptr=newilist_item(value);

insert_end(intvalue)

_at_end=_at_front=newilist_item(value);

_at_end=newilist_item(value,_at_end);

ilist_item*ilist:

find(intvalue)

ilist_item*ptr=_at_front;

voidilist:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2