首页 > 代码库 > 简单链表-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语言复习
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。