主题:菜鸟求问
我是个菜鸟求问很简单的问题,但我不知道,求各位尽量详细回答。谢了
下面是我在网上找的,有个几个地方看不懂,并希望把我标记的换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;
}
下面是我在网上找的,有个几个地方看不懂,并希望把我标记的换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;
}