C++链表构造函数

来源:百度知道 编辑:UC知道 时间:2024/06/17 01:00:36
//list.h
class listnode
{public:
listnode*first;
listnode*last;

int data;
listnode*link;
listnode();
listnode*find(int i);
void insert(int value,int i);
void remove(listnode*l);
void show(int n);
};
listnode::listnode()
{
first=new listnode;
first->link=NULL;
last=first;

};
listnode*listnode::find(int i)
{
if(i<=-1)
return first;
else
{ listnode*p=first->link;
int j=0;
while(p!=NULL&&j<i)
{
p=p->link;
j++;
}
return p;}
};
void listnode::insert(int value,int i)
{
listnode*p,*q;
q=new listnode;
p=find(i-1);
q->link=p->link;
q->data=value;
p->link=q;

if (q->link==NULL)
last=q;
};
//list.cpp
#include<iostream.h>
#include"list.h"
void main()
{ int value;<

new listnode 句调用了该类的构造函数,相当于无退出条件的递归,出现了死循环

您好虽然您定义了构造函数 但是里面又生成了自己的类,这是忌讳的,不可以用构造函数递归

另外“Press any key to continue”是程序结束和暂停时输出的

你把first,last声明为listnode的成员,每个listnode类的实例都有自己的first,last成员,这有什么意义.