vxworks系统下列表的使用

本文介绍了VxWorks操作系统中如何使用双向链表,包括LIST和NODE类型的定义、链表初始化、节点操作以及相关函数的使用。在VxWorks中,链表的头部和尾部通过宏定义,链表操作需要自定义节点类型,并确保其第一个元素为NODE类型。使用链表通常涉及定义节点类型、初始化链表、操作链表以及最后释放链表空间等步骤。
摘要由CSDN通过智能技术生成

vxWorks系统对常用数据结构的实现比较少,但是提供了对双向链表的支持,其声明位于lstLib.h头文件中,主要定义了以下一些内容:

 

1、LIST类型

     LIST类型的定义如下:

     LIST结构体属于是对整个链表的描述,它包括了链表的头指针、尾指针以及链表中节点的个数。其中,node的next指针是LIST的头指针(HEAD),node的previous指针是LIST的尾指针(TAIL),这在lstLib的实现中是通过宏来定义的,其定义如上边代码区下部:

定义LIST类型是使用链表的第一步,一般情况下都要以

    LIST myList;

的形式定义一个链表。

 

2、NODE类型

     其定义如下:

    NODE类型只是提供了对节点最基本的描述,一般情况下在自己的代码中是不能直接使用的,而是需要定义一个自己的节点数据类型,定义自己节点类型的时候,切记结构体的第一个位置必须是NODE类型的。这样,在程序中,创建节点的时候就创建一个MyNode类型的,而使用系统链表函数的时候,就把它强制转换成NODE类型,使用示例见上边代码最下部。

 

3、相关函数。

     函数的作用在此就不罗嗦了,后边有每个函数的实现,需要注意的是lstNth函数和lstExtract函数,lstNth函数中的序号应该是从1开始的,而不是0. lstExtract函数分出来的子列表时即包括startNode,又包括endNode的。另外需要注意的就是开始使用链表前先使用lstInit函数初始化,使用过程中删除的节点记得释放其空间(如果是malloc分配的话),使用完链表之后使用lstFree释放链表空间。

 

 

所以,使用链表的一般步骤是:

   首先定义自己的节点类型,定义一个LIST数据。

   使用lstInit对链表进行初始化

   使用系统提供的函数对链表进行操作,使用的过程中,用到自定义节点类型时记得类型转换,删除节点时记得释放空间。

   使用完链表,释放链表空间。

 

lstLib.c文件源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值