今天写一个递归函数的时候,试着没有传引用进去,but 最后输出的结果竟然没有错,最关键的是 调试结果和输出的结果不一样 一度怀疑,是不是自己的指针用错了,看了好久,然后换了不同的编译器测试。。 果然 该死的Codeblocks ,害我溜了好大一个湾 。。。。额 好吧,其实也还好,我还是很喜欢codeblocks的 嘻嘻嘻嘻嘻嘻
```cpp
#include<iostream>
using namespace std;
typedef class student
{
public :
int scores;
student *next;
}*Link,link;
void input_Link(Link &L,int e);
void printlist(Link &L);
void init_Link(Link &L);
void delete_Link(Link &L,int x);
void delete_putong(Link L,int e);
int main()
{
Link L;
init_Link(L);
int n,i,e;
cout<<"输入几个节点"<<endl;
cin>>n;
for(i=1;i<=n;i++)
{
cout<<"请输入数据"<<endl;
cin>>e;
input_Link(L,e);
}
//printlist(L);
cout<<"你想删除的值?"<<endl;
cin>>n;
//delete_putong(L,n);
//printlist(L);
delete_Link(L,n);
printlist(L);
return 0;
}
void init_Link(Link &L)
{
L=new link;
L=NULL;
}
void input_Link(Link &L,int e)
{
Link s=new link;
Link tail;
if(L==NULL)
{
s->scores=e;
s->next=NULL;
L=s;
}
else
{
Link p=L;
while(p->next!=NULL)
{
p=p->next;
}
s->scores=e;
s->next=NULL;
p->next=s;
}
}
void printlist(Link &L)
{
if(L==NULL)
{
return ;
}
else
{
Link p=L;
while(p!=NULL)
{
cout<<p->scores<<" ";
p=p->next;
}
}
}
void delete_Link(Link &L,int x) ///递归删除不带头节点链表的第一个 X元素
{
Link p;
if(L==NULL)
{
return ;
}
if(L->scores==x)
{
p=L;
L=p->next;
delete p;
return ;
}
else
{
delete_Link(L->next,x);
}
}
void delete_putong(Link L,int e)
{
if(L==NULL)
{
return ;
}
else if(L->next==NULL)
{
if(L->scores==e)
{
delete L;
}
}
else
{
Link p=L;
if(L->scores==e)
{
Link q=L->next;
delete L;
L=q;
return ;
}
while(p->next->scores!=e)
{
p=p->next;
}
if(p->next->scores)
{
Link q=p->next;
p->next=q->next;
delete q;
}
}
}