核心代码
struct Test* insertFromHead(struct Test* phead)
{
struct Test* new=NULL;
printf("Please input node Num:\n");
int i=0;
scanf("%d",&i);
while(i!=0)
{
new=(struct Test*)malloc(sizeof(struct Test));
printf("Please input node:\n");
scanf("%d",&(new->data));
if(phead==NULL)
{
phead=new;
}
else
{
new->next=phead;
phead=new;
}
i--;
}
return phead;
}
优化版
优点:将头插法和创建链表独立分开!
struct Test* inserFromHead(struct Test* phead,struct Test* new)
{
if(phead==NULL)
{
phead=new;
return phead;
}
else
{
new->next=phead;
phead=new;
return phead;
}
}
struct Test* createLink(struct Test* phead)
{
struct Test* new=NULL;
printf("Please input total node number:\n");
int i=0;
scanf("%d",&i);
while(1)
{
if(i!=0)
{
new=(struct Test*)malloc(sizeof(struct Test));
printf("Please input node:\n");
scanf("%d",&(new->data));
}
if(i==0)
{
printf("quit!\n");
return phead;
}
i--;
phead=insertFromHead(phead,new);
}
}
示例
#include <stdio.h>
#include <stdlib.h>
struct Test
{
int data;
struct Test* next;
};
void printLink(struct Test* phead)
{
struct Test* point=phead;
while(point!=NULL)
{
printf("%d ",point->data);
point=point->next;
}
putchar('\n');
/*
while(1)
{
if(phead!=NULL)
{
printf("%d ",phead->data);
phead=phead->next;
}
else
{
putchar('\n');
break;
}
}
*/
}
struct Test *insertFromHead(struct Test *head)
{
struct Test *new=NULL;
printf("Please input node Num:\n");
while(1)
{
new=(struct Test *)malloc(sizeof(struct Test));
printf("please input node:\n");
scanf("%d",&(new->data));
if(new->data==0)
{
printf("0 quit\n");
return head;
}
if(head==NULL)
{
head=new;
}
else
{
new->next=head;
head=new;
}
}
return head;
}
int main()
{
struct Test *head=NULL;
head=insertFromHead(head);
printLink(head);
return 0;
}
运行结果
优化版示例
#include <stdio.h>
#include <stdlib.h>
struct Test
{
int data;
struct Test* next;
};
void printLink(struct Test* phead)
{
struct Test* point=phead;
while(point!=NULL)
{
printf("%d ",point->data);
point=point->next;
}
putchar('\n');
/*
while(1)
{
if(phead!=NULL)
{
printf("%d ",phead->data);
phead=phead->next;
}
else
{
putchar('\n');
break;
}
}
*/
}
struct Test *insertFromHead(struct Test* phead,struct Test* new)
{
if(phead==NULL)
{
phead=new;
return phead;
}
else
{
new->next=phead;
phead=new;
return phead;
}
}
struct Test* createLink(struct Test* phead)
{
struct Test* new=NULL;
printf("Please input node:\n");
int i=0;
scanf("%d",&i);
while(1)
{
if(i!=0)
{
new=(struct Test*)malloc(sizeof(struct Test));
printf("Please input Node:\n");
scanf("%d",&(new->data));
}
if(i==0)
{
printf("quit\n");
return phead;
}
i--;
phead=insertFromHead(phead,new);
}
}
int main()
{
struct Test* head=NULL;
head=createLink(head);
struct Test t1={100,NULL};
head=insertFromHead(head,&t1);
printLink(head);
return 0;
}
运行结果