码迷,mamicode.com
首页 > 编程语言 > 详细

简单链表-C语言复习

时间:2014-09-01 22:33:13      阅读:319      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   for   数据   div   log   sp   

实现一个基本的链表,包括在链表后添加数据节点和输出链表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=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     else
44     {
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=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=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语言复习

标签:style   blog   color   io   for   数据   div   log   sp   

原文地址:http://www.cnblogs.com/lhyz/p/3949969.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!