資源簡介
1.有序順序表的元素按照從小到大有序存儲;
2.實現有序順序表的類模板,它的操作如下:
a)構造函數;b)拷貝構造函數;c)析構函數; d)計算表長度,并輸出; e)定位函數:查找x在表中位置;
f)判斷x是否在表中;g) 向表中插入x; h) 刪除表的第i個元素;i) 尋找x的后繼;
j) 尋找 x 的前驅;k) 判斷順序表空否;l) 判斷順序表滿否; m) 重載=;n) 重載下標運算[];
3.用有序順序表表示集合,實現兩個有序順序表的并和交(并和交仍是有序順序表)并分析它們的時間復雜度;

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
//#include?“jd.h“
using?namespace?std;
string?strInPutError?=?“數據錯誤請重新輸入!“;
template
struct?Node
{
Node(T1?valNode*?linkf?=?NULLNode*?linkp?=?NULL)
:_val(val)
{
????????next?=?linkf;
back?=?linkp;
}
????T1?_val;
Node?*?next;
Node?*?back;
};
template
class?CList
{
public:
??CList()
??{
??count?=?0;
??head??=?NULL;
??}
??CList(?Node?&node?)
??{
??head??=?&node;
??count?=?1;
??}
??CList(?CList?&li?)
??{
??if?(?this?!=?&li?)
??{
????????????head?=?li.head;
count?=?li.count;
??}
??}
??bool?is_elem_in(?T2?elem?);
??bool?insert(?T2?elem?);
??bool?remove(?int?pos?);
??bool?empty()?const?{?return?(?count?==?0?);}
??T2?back(?const?T2?val?);
??T2?next(?const?T2?val?);
??int?size()?const?{?return?(count);};
??T2&?operator?[](?int?pos?);
??CList&?combine(CList&?rhs);
??CList&?meet(CList&?rhs);
protected:
Node*?find_pos(T2?val);
Node*?find_Node(?T2?elem?);
Node*?elem(?int?pos?);
????bool?is_size_ok(int?pos)
{
return?(pos?>=?0?&&?pos? }
private:
Node*?head;
int?count;
};
template
Node*?CList::elem(int?pos)
{
if?(?!is_size_ok(pos)?)
{
return?NULL;
}
Node?*?curr?=?head;
for?(?int?i?=?0;?i? {
curr?=?curr->next;
}
return?curr;
}
template
Node*?CList::find_Node(T2?elem)
{
Node*?curr?=?head;
for?(int?i?=?0;?i? {
if?(curr->_val?==?elem)
{
return?curr;
}
curr?=?curr->next;
}
return?NULL;
};
template
bool?CList::is_elem_in(T2?elem)
{
???if?(?find_Node(?elem?))
???{
???return?(?true?);
???}
???else
???{
???return?(?false?);
???}
}
template
T2?CList::next(T2?val?)
{
?????Node*?curr?=?find_Node(val);
?if?(curr)
?{
return?(curr->next)->_val;
?}
?return?val;
}
template
T2?CList::back(?T2?val?)
{
Node*?curr?=?find_Node(val);
if?(curr)
{
return?(curr->back)->_val;
}
return?val;
}
template
T2&?CList::operator?[](?int?pos?)
{
Node*?curr?=?elem(pos);
if?(curr)
{
return?(curr->_val);
}
return?head->_val;
}
template
Node*?CList::find_pos(?T2?val)
{
?Node*?curr?=?head;
?????for?(int?i?=?0;?i??????{
????????if?(?val?>?curr->_val?&&?(curr->next?==?NULL?||?val?next->_val)?)
????????{
return?curr;
????????}
????????curr?=?curr->next;
?????}
?return?NULL;
}
template
bool?CList::insert(?T2?elem?)
{
Node*?node?=?new?Node(elem);
if?(head?!=?NULL?&&?elem?_val)
{
node->next?=?head;
head->back?=?node;
head?=?node;
count?++;
return?true;
}
if?(!count)
{
head?=?node;
node->back?=?NULL;
node->next?=?NULL;
count++;
return?true;
}
else
{
?????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????518??2008-09-21?22:49??clist1\clist1.dsw
?????文件???????9221??2008-09-21?22:49??clist1\clist.cpp
?????文件????????638??2008-09-21?22:51??clist1\clist1.plg
?????文件??????48640??2008-09-21?22:50??clist1\clist1.opt
?????文件???????4283??2008-09-21?22:50??clist1\clist1.dsp
?????目錄??????????0??2008-09-21?22:49??clist1
-----------?---------??----------?-----??----
????????????????63300????????????????????6
評論
共有 條評論