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

经典算法_链表

时间:2016-06-02 00:51:10      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:

 

1 创建一个链表,包含在尾部插入数据和输出的函数。

头文件linknode.h

源文件

源文件main.c

源文件linknode.c

 

2 创建一个链表,静态模式

3 创建一个链表,动态模式

 

1 创建一个链表,包含在尾部插入数据和输出的函数。

 

头文件linknode.h

 

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 struct student
 5 {
 6     int num;
 7     float score;
 8     struct student *pNext;
 9 };
10 
11 typedef struct student ST;
12 
13 void add(ST **phead, int inum, float iscore);//函数声明,传入头结点的地址,然后插入
14 
15 void showall(ST *head);//传递头结点,显示所有数据

 

源文件main.c

 

 1 #define _CRT_SECURE_NO_WARNINGS
 2 
 3 #include <stdio.h>
 4 #include <stdlib.h>
 5 #include "linknode.h"
 6 
 7 main()
 8 {
 9     struct student *head = NULL;//头结点指针
10 
11     add(&head, 1, 70);
12     add(&head, 2, 80);
13     add(&head, 3, 90);
14     add(&head, 4, 91);
15     add(&head, 5, 92);
16 
17     showall(head);
18 
19     system("pause");
20 }

 

源文件linknode.c

 

 1 #include "linknode.h"
 2 
 3 void add(ST **phead, int inum, float iscore)//函数声明,传入头结点的地址,然后插入
 4 {
 5     if (*phead == NULL)
 6     {
 7         ST *newnode = (ST *)malloc(sizeof(ST));//分配内存
 8         if (newnode == NULL)
 9         {
10             printf("内存分配失败");
11             return;
12         }
13         newnode->num = inum;//结点初始化
14         newnode->score = iscore;
15         newnode->pNext = NULL;
16 
17         *phead = newnode;//让头指针指向这个结点
18     }
19     else
20     {
21         //链表不为空,尾部插入
22         ST *p = *phead;//指向头结点
23         if (newnode == NULL)
24         {
25             printf("内存分配失败");
26             return;
27         }
28         while (p->pNext != NULL)//循环到最后一个结点的地址
29         {
30             p = p->pNext;
31         }
32         ST *newnode = (ST *)malloc(sizeof(ST));//分配内存
33         newnode->num = inum;//结点初始化
34         newnode->score = iscore;
35         newnode->pNext = NULL;
36 
37         p->pNext = newnode;//链接上
38     }
39 }
40 
41 void showall(ST *head)//传递头结点,显示所有数据
42 {
43     while (head != NULL)//判断指针是否指向为空
44     {
45         printf("num=%d,score=%f,%x,%x\n", head->num, head->score, head, head->pNext);
46         head = head->pNext;//指针不断向前循环
47     }
48 }

 

2 创建一个链表,静态模式

 

 1 #define _CRT_SECURE_NO_WARNINGS
 2 
 3 #include <stdio.h>
 4 #include <stdlib.h>
 5 
 6 struct info
 7 {
 8     int num;
 9     void *p;
10 };
11 
12 main()
13 {
14     struct info info1;//创建指针,静态模式
15     info1.num = 123;
16     info1.p = &info1.num;//存储地址
17 
18     printf("%d,%x\n", info1.num, info1.p);
19 
20     system("pause");
21 }

 

3 创建一个链表,动态模式

 

 1 #define _CRT_SECURE_NO_WARNINGS
 2 
 3 #include <stdio.h>
 4 #include <stdlib.h>
 5 
 6 struct info
 7 {
 8     int num;
 9     void *p;
10 };
11 
12 main()
13 {
14     struct info *pinfo;//创建指针,动态模式
15 
16     pinfo = (struct info *)malloc(sizeof(struct info));//分配内存
17 
18     pinfo->num = 125;
19     pinfo->p = &pinfo->num;
20 
21     printf("%d,%x\n", pinfo->num, pinfo->p);
22     printf("%d,%x\n", (*pinfo).num, (*pinfo).p);//等价于上面
23 
24     system("pause");
25 }

 

 

123

经典算法_链表

标签:

原文地址:http://www.cnblogs.com/denggelin/p/5551486.html

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