首页 > 代码库 > 简单链表-C语言复习

简单链表-C语言复习

实现一个基本的链表,包括在链表后添加数据节点和输出链表i所有数据的功能

 1 #include<stdio.h> 2 #include<stdlib.h> 3  4 typedef struct node 5 { 6     int data; 7     struct node *link; 8 }NODE; 9 10 //定义头指针11 NODE *head;12 13 void add(int data)14 {15     16     NODE *p;17     p=(NODE *)malloc(sizeof(NODE));18     p->data=http://www.mamicode.com/data;19 20     if(head==NULL)21     {22         head=p;23         return ;24     }25 26     //注意,此时要保证链表尾head->link永远在最后27     p->link=head->link;28     head->link=p;29 }30 31 void display(NODE *node)32 {33     int i=1;34     if(node)35     {36         while(node)37         {38             printf("%d -> %d\n",i,node->data);39             node=node->link;40             ++i;41         }42     }43     else44     {45         printf("this list had no data!\n");46     }47 }48 49 int main(void)50 {51     add(1);52     add(2);53     display(head);54     return 0;55 }

 实现向链表固定位置插入数据和删除数据的功能

  1 #include<stdio.h>  2 #include<stdlib.h>  3   4 typedef struct node  5 {  6     int data;  7     struct node *link;  8 }NODE;  9  10 //定义头指针 11 NODE *head; 12  13 void add_node(int data) 14 { 15      16     NODE *p; 17     p=(NODE *)malloc(sizeof(NODE)); 18     p->data=http://www.mamicode.com/data; 19  20     if(head==NULL) 21     { 22         head=p; 23         return ; 24     } 25  26     //注意,此时要保证链表尾head->link永远在最后 27     p->link=head->link; 28     head->link=p; 29 } 30  31 //删除第i个节点 32 void delete_node(int i) 33 { 34     NODE *p; 35     NODE *q; 36     int n; 37     if(!head) 38     { 39         return ; 40     } 41     if(i == 1) 42     { 43         p=head; 44         head=head->link; 45         free(p); 46         return ; 47     } 48     for(n=1,q=head;n<i-1 && q->link!=NULL; ++n) 49     { 50         q=q->link; 51     } 52     p=q->link; 53     q->link=p->link; 54     free(p); 55 } 56  57 //插入节点 58 void insert_node(int i,int data) 59 { 60     NODE *p; 61     NODE *q; 62     int n; 63  64     p=(NODE *)malloc(sizeof(NODE)); 65     p->data=http://www.mamicode.com/data; 66  67     if(i == 1) 68     { 69         p->link=head; 70         head=p; 71         return ; 72     } 73     for(n=1,q=head;n<i-1 && q!=NULL;++n) 74     { 75         q=q->link; 76     } 77     p->link=q->link; 78     q->link=p; 79 } 80  81 void display(NODE *node) 82 { 83     int i=1; 84     if(node) 85     { 86         while(node) 87         { 88             printf("%d -> %d\n",i,node->data); 89             node=node->link; 90             ++i; 91         } 92     } 93     else 94     { 95         printf("this list had no data!\n"); 96     } 97 } 98  99 int main(void)100 {101     add_node(1);102     add_node(2);103     display(head);104     printf("\n");105     insert_node(1,3);106     display(head);107     return 0;108 }

 

简单链表-C语言复习