程序没错,但是运行不起来,再看看后再改 PS:已改为完成版,都是小错误!,目前可以潇洒运行和测试
#include "stdafx.h"
#include<iostream>
using namespace std;
class Node
{
private:
int data;
Node*pnext;
friend class slist;
public:
Node()
{
pnext = NULL;
};
Node(int n){data=n;};
~Node();
int Getdata();
// friend ostream& operator<<(ostream os,Node out);
};
class slist
{
private:
Node*phead;
public:
slist();
~slist();
int Length();
Node*Find1(int n);
Node*Find2(int vdata);
bool Insert(int vdata,int n);
int delet(int n);
void Show();
};
Node::~Node(){}
int Node::Getdata()
{
return this->data;
}
//ostream& operator<<(ostream& os,Node& out)
//{
// os<<out.data;
// return os;
//}
slist::slist()
{
phead = new Node();
}
slist::~slist()
{
while(phead!=NULL)
{
Node*ptemp;
ptemp=phead->pnext;
delete phead;
phead=ptemp;
}
}
int slist::Length()
{
int count=0;
Node*ptemp=phead->pnext;
while(ptemp!=NULL)
{
ptemp=ptemp->pnext;
count++;
}
return count;
}
Node*slist::Find1(int n)
{
if(n<0)
{
cout<<"this operator is wrong!"<<endl;
return NULL;
}
Node*ptemp;
ptemp=phead->pnext;
for(int i=0;i<n;i++)
{
ptemp=ptemp->pnext;
if(ptemp==NULL)
{
cout<<"n is too big!"<<endl;
return NULL;
}
}
return ptemp;
}
Node*slist::Find2(int vdata)
{
if(phead=NULL)
{
cout<<"there is no data"<<endl;
return NULL;
}
Node*ptemp=phead->pnext;
while(ptemp!=NULL&&!(ptemp->data==vdata))
{
ptemp=ptemp->pnext;
}
return ptemp;
}
bool slist::Insert(int vdata,int n)
{
if(n<0)
{
cout<<"we can not do this"<<endl;
return 0;
}
Node*pmove=phead;
for(int i=0;i<n&&!(pmove==NULL);i++)
{
pmove=pmove->pnext;
}
if(pmove==NULL)
{
cout<<"there is no position!"<<endl;
return 0;
}
Node*pinsert=new Node(vdata);
pinsert->pnext=pmove->pnext;
pmove->pnext=pinsert;
return 0;
}
int slist::delet(int n)//DELET 第N之后的结点
{
Node*pmove=phead;
if(n<0)
{
cout<<"we can not do this"<<endl;
return 0;
}
for(int i=0;i<n&&pmove->pnext;i++)
{
pmove=pmove->pnext;
}
if(pmove->pnext==NULL)
{
cout<<"can not delete NULL"<<endl;
return 0;
}
Node*pdelete;
pdelete=pmove->pnext;
pmove->pnext=pdelete->pnext;
int temp=pdelete->data;
delete pdelete;
return temp;
}
void slist::Show()
{
Node*pmove=phead->pnext;
while(pmove)
{
cout<<pmove->data;
pmove=pmove->pnext;
}
}
int main(int argc, char* argv[])
{
slist list;
for(int i=0;i<10;i++)
{
list.Insert(i*3,i);
}
cout<<list.Length()<<endl;
list.Show();
cout<<list.Find1(4);
return 0;
}