链表的初体验
来源:互联网 发布:淘宝u站是什么意思 编辑:程序博客网 时间:2024/04/30 07:13
/********************************************
*由c++primer 5.11链表示例整理
*经由BHQT@DLUT C版朋友帮助
*ilist.h文件
********************************************/
#include <iostream>
using namespace std;
class ilist_item
{
public:
ilist_item (int value,ilist_item *item_to_link_to =0);
int value()
{
return _value;
}
ilist_item* next()
{
return _next;
}
void next(ilist_item *link)
{
_next = link;
}
void value(int new_value)
{
_value = new_value;
}
public:
ilist_item *_next;
int _value;
};
class ilist
{
public:
void display( ostream &os = cout);
//ilist();
int size();
void insert_front(int value);
void insert_end(int value);
// void display();
ilist_item* find(int value);
void insert(ilist_item *ptr,int value);
ilist(): _at_front(0), _at_end(0), _size(0){}
private:
ilist(const ilist&);
ilist& operator=(const ilist&);
ilist_item *_at_front;
ilist_item *_at_end;
int _size;
};
void ilist::display(ostream &os)
{
os<< "/n(" << _size << ")(";
ilist_item *ptr = _at_front;
while (ptr)
{
os << ptr->value() << " ";
ptr = ptr ->next();
}
os <<")/n";
}
inline int ilist::size()
{
return _size;
}
inline ilist_item::ilist_item(int value, ilist_item *item): _value(value)
{
if (!item)
{
_next = 0;
}else
{
_next = item->_next;
item->_next =this;
}
}
inline void ilist::insert(ilist_item *ptr,int value)
{
if (!ptr)
{
insert_front(value);
}else
{
//bump_up_size();
new ilist_item(value,ptr);
}
}
inline void ilist::insert_front(int value)
{
ilist_item *ptr = new ilist_item(value);
if (!_at_front)
{
_at_front=_at_end=ptr;
}else
{
ptr->next(_at_front);
_at_front=ptr;
}
//bump_up_size();
}
inline void ilist::insert_end(int value)
{
if (!_at_end)
{
_at_end = _at_front = new ilist_item(value);
}else
{
_at_end = new ilist_item(value, _at_end);
}
//bump_up_size();
}
ilist_item* ilist::find(int value)
{
ilist_item *ptr = _at_front;
while (ptr)
{
if (ptr->value()==value)
break;
ptr=ptr->next();
}
return ptr;
}
/**************************************
*由c++primer 5.11链表示例整理
*经由BHQT@DLUT C版朋友帮助
*mylist.cpp文件
**************************************/
#include <iostream>
#include "ilist1.h"
//using namespace std;
int main()
{
ilist mylist;
for (int ix=0;ix<10 ;++ix )
{
mylist.insert_front(ix);
mylist.insert_end(ix);
}
cout <<"OK:after insert_front() and insert_end()/n";
mylist.display();
ilist_item *it = mylist.find( 8 );
cout << "/n"
<< "Searching for the value 8: found it?"
<<(it ?"yes! /n" : " no! /n");
mylist.insert( it, 1024 );
cout << "/n"
<< "Inserting element 1024 following the value 8 /n";
mylist.display();
}
- 链表的初体验
- rmi的初体验!
- rmi的初体验!
- Vista的初体验
- OO的初体验
- Fedora9 的 初体验
- Ajax的初体验
- Hibernate的初体验
- startio 的初体验。。
- 爱的初体验
- C++的初体验
- wxWidgets的初体验
- gitHub的初体验
- 数据库的初体验
- markdown的初体验
- MongoDB的初体验
- OSV的初体验
- express的初体验
- 关于我的个人随笔
- 转载:当男人把少女关在房间里时...
- 真正程序员(搞笑版)
- 在.NET中调试设计时(design-time)控件
- 远程SQL SERVER服务器备份数据到客户机
- 链表的初体验
- Fri Jan 07 16:27:53 CST 2005 Diary
- WINME/WIN2000/LINUX多重启动详解(4年前写的,不知道现在还有没有用)
- VI/VIM技巧
- WebSphere多节点安装及"克隆"配置说明
- 使用Eclipse 加入Tomcat调试Jsp。
- Trick:conversion from TDesC to TInt(symbian)
- frames
- c# ,在Oracle 中,对 blob 类型对象的操作