分为两种,头会变(一开始就是空链表,新节点插入后变成头节点),头不变。
1 #include<stdio.h>
2 #include<stdlib.h>
3
4 struct test
5 {
6 int data;
7 struct test *next;
8 };
9
10 void printLink(struct test *head)
11 {
12 struct test *point = head;
13 while(point !=NULL ){
14 printf("%d ",point->data);
15 point = point->next;
16 }
17 putchar('\n');
18 }
19
20 struct test* insertFromHead(struct test *head,struct test *new)
21 {
22 if(head==NULL){
23 head = new;
24 }else{
25 new->next=head;
26 head=new;
27 }
28 return head;
29
30 }
31
32 struct test* insertFromBehind(struct test *head,struct test *new)
33 {
34 struct test *point=head;
35 if(head==NULL){
36 head=new;
37 }else{
38 while(point->next!=NULL){
39 point=point->next;
40 }
41 point->next=new;
42 }
43 return head;
44 }
45
46 struct test* createLink(struct test *head)
47 {
48 struct test *new=NULL;
49
50 while(1){
51 new =(struct test*)malloc(sizeof(struct test*));
52 printf("please input a new \n");
53 scanf("%d",&(new->data));
54 if(new->data==0){
55 free(new);
56 return head;
57 }
58 else{
59 head=insertFromHead(head,new);
60 }
61 }
62 }
63
64 struct test* createLink2(struct test *head)
65 {
66 struct test *new=NULL;
67
68 while(1){
69 new =(struct test*)malloc(sizeof(struct test*));
70 printf("please input a new \n");
71 scanf("%d",&(new->data));
72 if(new->data==0){
73 free(new);
74 return head;
75 }
76 else{
77 head=insertFromBehind(head,new);
78 }
79 }
80 }
81
82 int main()
83 {
84 struct test *head=NULL;
85 head = createLink2(head);
86 printf("result:\n");
87 printLink(head);
88
89 struct test t1={100,NULL};
90 head = insertFromHead(head,&t1);
91 printf("result2:\n");
92 printLink(head);
93
94 struct test t2={200,NULL};
95 head = insertFromBehind(head,&t2);
96 printf("result3:\n");
97 printLink(head);
98
99 return 0;
100 }