我是个菜鸟求问很简单的问题,但我不知道,求各位尽量详细回答。谢了
下面是我在网上找的,有个几个地方看不懂,并希望把我标记的换C++
还有帮我解释头接法和尾接法的区别和好处,



#include<stdio.h>
#include<iostream.h>
#include<malloc.h>

typedef struct List_Node{
     int info;
     struct List_Node *next;
   }node;//结点结构体

/******************************/
/* 尾插法建立带头结点的单链表 */
/******************************/
node* Creat_Node()
{
     node *head,*pre,*p;
     int x;
     head=(node*)malloc(sizeof(node));;
     head->next=NULL;
     pre=head;
     printf("输入各结点的值,以0结束:");
     while(EOF!=(scanf("%d",&x))&&x!=0)//看不懂且换C++
     {
         p=(node*)malloc(sizeof(node));
         p->info=x;
         p->next=pre->next;
         pre->next=p;
         pre=pre->next;
     }
     return head;
}

/******************************/
/* 头插法建立带头结点的单链表 */
/******************************/
node* Build_Node()
{
     node *head,*p;
     int x;
     head=(node*)malloc(sizeof(node));;
     head->next=NULL;
     printf("输入各结点的值,以0结束:");
     while(EOF!=(scanf("%d",&x))&&x!=0)
     {
         p=(node*)malloc(sizeof(node));
         p->info=x;
         p->next=head->next;
         head->next=p;
     }
     return head;
}


/******************************/
/*          打印单链表          */
/******************************/

void Print_Node(node *head)
{
     node *p=head->next;
     cout<<"输出该链表:"<<endl;
     while(p)
     {
        cout<<p->info<<endl;
         p=p->next;
     }
     if(p==NULL)
     {
         cout<<endl;
     }
}



int Count_Node(node *head)
{
     node *p=head->next;
     int num=0;
     while(p!=NULL)
     {
         num++;
         p=p->next;
     }
     return num;
}

int main()
{
     node *head;
     head=Creat_Node();
     Print_Node(head);
     cout<<"结点个数为:"<<Count_Node(head)<<endl;
     return 0;
}