-
大小: 6KB文件類型: .cpp金幣: 1下載: 0 次發(fā)布日期: 2021-05-04
- 語言: C/C++
- 標(biāo)簽:
資源簡介
數(shù)據(jù)結(jié)構(gòu)上機(jī)實驗課題之一,要求實現(xiàn)單鏈表的插入排序等功能。
代碼片段和文件信息
#include?
using?namespace?std;
template?
struct?Node{
???????Node(const?T?itemNode*?nextnode=NULL){data=item;next=nextnode;}
???????Node(Node*?nextnode=NULL){next=nextnode;}
???????T?data;
???????Node*?next;
??????};
??????
template?
class?List?{
private:
????????Node?*?head?*?tail?*currptr;
????????int?size;
public:
???????List();
???????List(T?&item);
???????~List();
???????bool?IsEmpty()const;
???????void?Insert(const?T?&item);??????????????//在當(dāng)前結(jié)點后插入?
???????void?InsertFromTail(const?T?&item);??????//在頭結(jié)點后插入?
???????void?InsertFromHead?(const?T?&item);????//在尾結(jié)點后插入?
???????void?Delete();????????????????????//刪除當(dāng)前結(jié)點的后續(xù)結(jié)點?
???????void?DeleteFromHead();????????????//刪除頭結(jié)點?
???????void?DeleteFromTail();???????????//刪除尾結(jié)點
???????void?Find();????????????????????????//存取當(dāng)前結(jié)點值?
???????void?Find(int);?????????????????????//存取指定結(jié)點值?
???????int?Search(const?T?&item);??????????//返回結(jié)點下標(biāo)?
???int?Getsize(){return?size;};
};
template?
List::List(){
????????????????head=tail=currptr=new?Node();
????????????????size=0;
????????????????}
????????????????
template?
List::List(T?&item){
????????????????currptr=tail=new?Node(item);
????????????????head=new?Node(currptr);
????????????????size=1;
????????????????}
????????????????
template??
List::~List(){
?????????????????while(!IsEmpty()){
?????????????????currptr=head->next;
?????????????????head->next=currptr->next;
?????????????????delete?currptr;
?????????????????}
?????????????????delete?head;
?????????????????}
?????????????????
template?
bool?List::IsEmpty()const{
?????if(head->next==NULL)
?????return?true;
?????return?false;
?????}
?????????????????????
template?
void?List::Insert(const?T?&item){
?if(currptr==NULL)?return;
?????currptr->next=new?Node(itemcurrptr->next);
?????if(tail==currptr)
?????tail=currptr->next;
?????size++;
?????}
?????
template?
void?List::InsertFromHead(const?T?&item){
?????if(IsEmpty()){
???????????????????head->next=new?Node(item);
???????????????????currptr=tail=head->next;
???????????????????}
?????else
??????????head->next=new?Node(itemhead->next);
??????????size++;
??????????}
template?
void?List::InsertFromTail(const?T?&item){
?????tail->next=new?Node(item);
?????tail=tail->next;
?????size++;
?????}
template?
void?List::Delete(){
?????if(IsEmpty()||currptr==tail){
?????cout<<“Empty?List?or?no?next?Node?!“< ?????return?;
?????}
?????else{
??????????Node*temp=currptr->next;
??????????currptr->next=temp->next;
??????????T?deldata=temp->data;
??????????if(currptr->next==tail){
??????????tail=currptr;
??????????currptr->next=NULL;?
??????????}
??????????delete?temp;
??????????size--;
??????????cout<<“the?deleted?data?is?:?“< ??????????}
?????}
??????????
template?
void?List::
評論
共有 條評論