主题:单链表的倒置 函数锦上添花
#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]
#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]