微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 单项链接的接口问题

单项链接的接口问题

时间:08-26 来源:周立功单片机 点击:

      my_list_del(p_head, 3); 

57        free(p_head);

58        return 0;

59  }

如果按照int型数据的示例,使用链表管理学生记录,则需要在学生记录中添加一个链表结点数据。比如:

typedef struct _student{

           slist_node_t  node;                                // 包含链表结点

           char           name[10];                       // 姓名为字符串

           char           sex;                             // 性别为字符型

           float        height, weight;                    // 身高、体重为实型

}student_t;

虽然这样定义使得学生信息可以使用链表来管理,但却存在一个很严重的问题,因为修改了学生记录类型的定义,就会影响所有使用该记录结构体类型的程序模块。在实际的应用上,学生记录可以用链表管理,也可以用数组管理,当使用数组管理时,则又要重新修改学生记录的类型。而node仅仅是链表的结点,与学生记录没有任何关系。不能将node直接放在学生记录结构体中,应该使它们分离。基于此,需要定义一个新的结构体类型,将学生记录和node关联起来,使得可以用链表来管理学生记录。比如:

typedef struct _slist_student{

           slist_node_t  node;                                // 包含链表结点

           student_t     student;                             // 学生记录

}slist_student_t;

使用范例详见程序清单3.32。

程序清单3.32  综合程序范例

1    #include

2    #include "slist.h"

3    #include

4

5    typedef struct _student{

6         char    name[10];                                  // 姓名为字符串

7         char    sex;                                        // 性别为字符型

8         float    height, weight;                                  // 身高、体重为实型

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top