算法比较菜,没算法天赋呀。。。得多写。。。
struct node {
int a;
node * pnext;
} ;
void addlist(node * phead,int a)
{
if(phead == NULL)
return ;
while (phead->pnext != NULL)
{
phead = phead ->pnext ;
}
node * p = new node;
p->a = a;
p->pnext = NULL ;
phead->pnext = p;
}
void DisplayListRecursive(node * phead)
{
if(phead == NULL )
return ;
DisplayListRecursive(phead->pnext);
printf("%d \n",phead->a);
}
void DisplayList(node * phead)
{
if(phead == NULL)
return ;
while(phead != NULL)
{
printf("%d \n",phead->a);
phead = phead->pnext ;
}
}
node * RecursiveList(node * phead)
{
node * p1,*p2,*p3 ;
if(phead==NULL)
return NULL;
if(phead->pnext == NULL)
return phead ;
p1 = phead;
p2 = p1->pnext ;
p3 = p2->pnext ;
phead->pnext = NULL ;
while(p3 != NULL)
{
p2->pnext = p1 ;
p1 = p2 ;
p2 = p3 ;
p3 = p3->pnext ;
}
p2->pnext = p1;
return p2 ;
}
node * RecursiveListE(node * phead)
{
if(phead == NULL || phead->pnext == NULL )
return phead ;
else
{
node * pnewhead = RecursiveListE(phead->pnext ) ;
phead->pnext->pnext = phead ;
phead->pnext = NULL ;
return pnewhead ;
}
}
int main(int argc, char* argv[])
{
node * head = new node;
head->a = 0 ;
head->pnext = NULL;
addlist(head,1);
addlist(head,2);
addlist(head,3);
addlist(head,4);
DisplayList(RecursiveListE(head));
return 0;
}