链表基本操作
答案:1 悬赏:70 手机版
解决时间 2021-03-22 13:58
- 提问者网友:wodetian
- 2021-03-21 21:36
链表基本操作
最佳答案
- 五星知识达人网友:我住北渡口
- 2021-03-21 22:26
struct Link
{
int data;
Link *Next;
}
///////////////////////////////////////////////////////////////////////////////
class LinkList//带头结点的链表
{
public:
void SetNull();
void CreateLink();
void Insert(int x,int n);//在第x个元素后面插入n
int FindByNum(int x);//找到第x位置的元素,并返回该元素
int FindByValues(int n);//找到值等于n的元素,并返回该元素的位置
int GetLength();
void print();
Link *List;
};
//////////////////////////////////////////////////////////////////////////////////
void LinkList::SetNull()
{
List=NULL;
}
void LinkList::CreateLink()//输入整数建立链表,-1结束
{
Link *tail,*p;
List=tail=new Link;
List->Next=NULL;
int x;
cin>>x;
while(x>0)
{
p=new Link;
p->data=x;
if(List->Next==NULL)
List->Next=p;
else
tail->Next=p;
tail=p;
cin>>x;
}
tail->Next=NULL;//链表结束标志
}
void LinkList::Insert(int x,int n)//在第x个元素后面插入n
{
if(List->Next==NULL)
{
cout<<"链表为空!"< }
else
{
Link *p,*q;
p=q=new Link;
q=List->Next;
int i=0;
while(i!=x-1)
{
if(q->Next==NULL)
{
cout<<"参数有误!"< break;
}
else
{
q=q->Next;
}
i++;
}
p->data=n;
p->Next=q->Next;
q->Next=p;
}
}
void LinkList::print()
{
if(List==NULL)
cout<<"链表为空,print"< else
{
Link *p=new Link;
p=List->Next;
cout<<"打印链表:";
while(p)
{
cout<<""<data<<",";
p=p->Next;
}
delete p;
cout< }
}
int LinkList::FindByNum(int x)//找到第x位置的元素,并返回该元素
{
int n=0;
if(List==NULL)
cout<<"链表为空,print"< else
{
Link *p=new Link;
int i=0;
p=List->Next;
while(i!=x-1)
{
if(p==NULL)
{
cout<<"参数有误!"< break;
}
p=p->Next;
i++;
}
n=p->data;
}
return n;
}
int LinkList::FindByValues(int n)
{
int i=1;
if(List==NULL)
cout<<"链表为空,print"< else
{
Link *p=new Link;
p=List->Next;
while(p->data!=n)
{
if(p==NULL)
{
cout<<"未找到!"< break;
}
p=p->Next;
i++;
}
}
return i;
}
int LinkList::GetLength()//获得链表长度 存入链首
{
int i=0;
if(List==NULL)
cout<<"链表为空"< else
{
Link *p=new Link;
p=List->Next;
while(p)
{
p=p->Next;
++i;
}
List->data=i;
}
return i;
}
int _tmain(int argc, _TCHAR* argv[])
{
LinkList L;
L.SetNull();
cout<<"创建链表:";
L.CreateLink();
L.print();
cout<<"在第二个元素后面插入 111";
L.Insert(2,111);
L.print();
cout<<"输出第二个位置的元素:"< cout<<"等于3的元素的位置是:"< L.GetLength();
cout<<"链表长:"<data;
return 0;
}
{
int data;
Link *Next;
}
///////////////////////////////////////////////////////////////////////////////
class LinkList//带头结点的链表
{
public:
void SetNull();
void CreateLink();
void Insert(int x,int n);//在第x个元素后面插入n
int FindByNum(int x);//找到第x位置的元素,并返回该元素
int FindByValues(int n);//找到值等于n的元素,并返回该元素的位置
int GetLength();
void print();
Link *List;
};
//////////////////////////////////////////////////////////////////////////////////
void LinkList::SetNull()
{
List=NULL;
}
void LinkList::CreateLink()//输入整数建立链表,-1结束
{
Link *tail,*p;
List=tail=new Link;
List->Next=NULL;
int x;
cin>>x;
while(x>0)
{
p=new Link;
p->data=x;
if(List->Next==NULL)
List->Next=p;
else
tail->Next=p;
tail=p;
cin>>x;
}
tail->Next=NULL;//链表结束标志
}
void LinkList::Insert(int x,int n)//在第x个元素后面插入n
{
if(List->Next==NULL)
{
cout<<"链表为空!"<
else
{
Link *p,*q;
p=q=new Link;
q=List->Next;
int i=0;
while(i!=x-1)
{
if(q->Next==NULL)
{
cout<<"参数有误!"<
}
else
{
q=q->Next;
}
i++;
}
p->data=n;
p->Next=q->Next;
q->Next=p;
}
}
void LinkList::print()
{
if(List==NULL)
cout<<"链表为空,print"<
{
Link *p=new Link;
p=List->Next;
cout<<"打印链表:";
while(p)
{
cout<<""<
p=p->Next;
}
delete p;
cout<
}
int LinkList::FindByNum(int x)//找到第x位置的元素,并返回该元素
{
int n=0;
if(List==NULL)
cout<<"链表为空,print"<
{
Link *p=new Link;
int i=0;
p=List->Next;
while(i!=x-1)
{
if(p==NULL)
{
cout<<"参数有误!"<
}
p=p->Next;
i++;
}
n=p->data;
}
return n;
}
int LinkList::FindByValues(int n)
{
int i=1;
if(List==NULL)
cout<<"链表为空,print"<
{
Link *p=new Link;
p=List->Next;
while(p->data!=n)
{
if(p==NULL)
{
cout<<"未找到!"<
}
p=p->Next;
i++;
}
}
return i;
}
int LinkList::GetLength()//获得链表长度 存入链首
{
int i=0;
if(List==NULL)
cout<<"链表为空"<
{
Link *p=new Link;
p=List->Next;
while(p)
{
p=p->Next;
++i;
}
List->data=i;
}
return i;
}
int _tmain(int argc, _TCHAR* argv[])
{
LinkList L;
L.SetNull();
cout<<"创建链表:";
L.CreateLink();
L.print();
cout<<"在第二个元素后面插入 111";
L.Insert(2,111);
L.print();
cout<<"输出第二个位置的元素:"<
cout<<"链表长:"<
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯