 
										
					
	
倚天照海花无数,流水高山心自知。
这说法是错误的,经过验证,仍然是反向的
以下是验证代码:
/* 带头接点*/
#include "Stdio.h"
#include "Conio.h"
typedef int type;
typedef struct Node
{
    type info;
    struct Node *next;
}Node;
void Create(Node *L,int num)
{   /*正向创建链表*/
    int i;
    Node *p,*q;
    Node *s=L;
    L=(Node *)malloc(sizeof(Node));
    p=(Node *)malloc(sizeof(Node));
    printf("Please input the element you want:");
    scanf("%d",&p->info);
    p->next=NULL;
    L->next=s->next=p;
    q=p;
    for (i=1;i<num;i++)
    {
        p=(Node *)malloc(sizeof(Node));
        printf("Please input the element you want:");
        scanf("%d",&p->info);
        p->next=NULL;
        q->next=p;
        q=p;
    }
}
void  print_link_list(Node *head,Node *root)
{
    if(head->next==NULL)
    {
        printf("%5d-->",head->info);
        return;
    }
    else
    {
        print_link_list(head->next,root);
        if (head==root)
            return;
        printf("%5d-->",head->info);
    }
}
int main(void)
{
  Node La;
  Create(&La,5);
  print_link_list(&La,&La);
  getch();
  return 0;
}
你已经将代码改了,肯定是反向啦,你看看楼主的代码,另外,你创建单链表的用的变量太多了,而且根本没有必要弄两个头结点

我只是加上了不输出head的代码,其他的没变
void  print_link_list(Node *head,Node *root)
{
    if(head->next==NULL)
    {
        printf("%5d-->",head->info);
        return;
    }
    else
    {
        print_link_list(head->next,root);
        if (head==root)
            return;
        printf("%5d-->",head->info);
    }
}
只加了红色代码
加了红色的就正确了,这才是递归的意义,等程序自动“退栈”的时候就调用红色后面的输出代码,跟我用变量的方法差不多,而且你好像比搂住的函数多了个参数,反正搂住那个不是反向的,是正向的,你改的就是反向的啦,哈哈
