#include <iostream>
#define L 9
using namespace std;


typedef struct Lnode
{
    char   letter;
    struct Lnode *next;
}Linklist;
Linklist *head,*p,*rear;


Linklist *Invert(Linklist* head0);
void  prift(Linklist* head0);


int main()
{
    head=(Linklist *)malloc(sizeof(Linklist));
    head->next=NULL;
    p=head;
    
    
    for(int i=0;i<L;++i)
    {
        rear=(Linklist *)malloc(sizeof(Linklist));
        rear->letter='A'+i;
        rear->next=NULL;
        
        p->next=rear;
        p=p->next;
        //free(rear);                              此处要不要释放rear空间
        
    }
    
    
    prift(head);  
   
    Linklist *q;
    
    q= Invert(head);
    
    prift(q);  //输出倒置序列
    
    return 0;
}




//输出函数的实现
void prift(Linklist *head0)
{
    Linklist *pf;
    pf=(Linklist *)malloc(sizeof(Linklist));
    
     for(pf=head;pf->next!=NULL;pf=pf->next)
    {
        cout<<pf->letter<<"\t";
    }
    cout<<pf->letter<<endl;
    
    return ;
    
}

//倒置序列函数的实现
 Linklist *Invert(Linklist *head)
    {
      Linklist *p1,*p2;
      p1=head;
      p2=p1->next;
      head=p2->next;
      p1->next=NULL;
      while(head->next!=NULL)
      {
       p2->next=p1;
       p1=p2;
       p2=head;
       head=head->next;
      }
      head->next=p2;
      p2->next=p1;
      
      
      
      return head;
    }
[size=5]当运行时:Invert()函数以后的代码怎么不起作用了?究其缘由何在?望明人指点。。[/size]