尾插法创建链表
在末尾插入节点,head->next=new,return head;
#include<stdio.h>
#include<stdlib.h>
struct Test
{
int data;
struct Test *next;
};
void printlink(struct Test *head)
{
while(head!=NULL){
if(head!=NULL){
printf("%d ",head->data);
head=head->next;
}
}
putchar('\n');
}
struct Test *creatfromhead(struct Test *head,struct Test *new)
{
if(head==NULL){
head=new;
}
else{
new->next=head;
head=new;
}
return head;
}
struct Test *creatlink(struct Test *head)
{
struct Test *new;
while(1){
new=(struct Test*)malloc(sizeof(struct Test));
printf("please input your data\n");
scanf("%d",&new->data);
new->next=NULL;
if(new->data==0){
printf("0 quit\n");
return head;
}
head=creatfromhead(head,new);
}
};
struct Test *insertinbehind(struct Test *head,struct Test *new)//declare the function insertinbehind
// ;(shengminghanshu)
{
struct Test *p=head;
if(p==NULL){
head=new;
return head;
}
while(p->next!=NULL){
p=p->next;
}
p->next=new;
return head;
}
struct Test *creatlink2(struct Test *head)
{
struct Test *new;
while(1){
new=(struct Test*)malloc(sizeof(struct Test));
printf("please input your data\n");
scanf("%d",&new->data);
new->next=NULL;
if(new->data==0){
printf("0 quit\n");
return head;
}
// head=creatfromhead(head,new);
head=insertinbehind(head,new);
}
};
int main()
{
struct Test *head=NULL;
struct Test t1={1111,NULL};
head=creatlink2(head);
printlink(head);
head=insertinbehind(head,&t1);
printlink(head);
return 0;
}