读书人

小弟我写了两个函数一个用于创建链表

发布时间: 2012-03-22 17:43:57 作者: rapoo

我写了两个函数,一个用于创建链表,一个用来逆序,但是debug的时候除了写问题,来看看,大牛们
我是在Vc 6.0环境下写并调试的

C/C++ code
struct Student{Student* Next;}Student* ListCreat(int ListSpace){    Student* p1,*p2;    Student* Head=NULL;    int temp=ListSpace;    p1=p2=new Student;    while(ListSpace!=0)      {    if(ListSpace+1==temp)//检查是不是第一次开链表         {   Head=new Student;              Head->Next=p1;  }                               {  p1->Next=p2;                           // p2->Last=p1;                            p2->Next=NULL;  }  //开辟空间                 {    p1=p2;                      p2=NULL;                  p2=new Student; //准备下一次                  ListSpace--;                  }//开辟完毕      }p2->Next=NULL; //以防万一再一次设置return Head;}Student* ConVerse(Student* a){   if(a==NULL)     return NULL;    Student* p1;    Student* p2;    p1=a->Next;    a->Next=NULL;    p2=p1;    while(p2!=NULL)    {           p1=p2;         p2=p1->Next;         p1->Next=a;         a=p1;    }    return p1;}int main(){     Student* a;    Student* b;    a=ListCreat(2);    b=a;    for(;a->Next!=NULL;)    {    cout<<a<<endl;       a=a->Next;       }    cout<<endl;        b=ConVerse(b);        for(int i=0;b->Next!=NULL;i++)    {    cout<<b<<endl;       b=b->Next;       }        return 0;}


然后出了以下结果
0X002B00770
0X002B00700

0X002B00738
0X003B00700

但是在创建链表的时候链尾还有一个0X002B00A3
第一次打印的时候没有这个值
但是逆序了以后头结点尾节点也不对了

[解决办法]
单步调试,或者设断点看看你,涉及到指针经常会出现各种各样的问题,自己要学会怎么去调试,经验之谈

读书人网 >C++

热点推荐