vxWorks双向链表是多任务交流方式中共享内存方式之一,适用于传递大量数据,需要快速访问的情况的数据结构,下面是示例代码:
lstLib.c的源码vxWorks5.5.1位置在:C:\Tornado2.2\target\src\util\lstLib.c;vxWorks6.8位置在(Rtp):.\WindRiver3.8\vxworks-6.8\target\usr\src\util\lstLib.c
//双向链表的测试例子
#include <stdlib.h>
#include <stdio.h>
#include <lstLib.h>
typedef struct _Queue
{
NODE * next;
NODE * prev;
int age;
char name[255];
} QUEUE;
LIST list;
void TestList()
{
QUEUE *p; //临时指针用
QUEUE q;
int i;
//链表库初始化
lstLibInit();
//初始化链表描述符
lstInit(&list);
//添加节点
for(i = 0; i < 10; i++)
{
p = malloc(sizeof(QUEUE));
if(p)
{
p->age = i * 5;
sprintf(p->name, "person %d", i);
lstAdd(&list, (NODE*)p);
}
}
//返回链表的节点个数
printf("Nums: %d\n", lstCount(&list));
//返回第一个节点
p = (QUEUE*)lstFirst(&list);
printf("1st name = %s, age = %d\n", p->name, p->age);
//遍历链表后,并删除掉每一个节点
for(i = 0; i < 10; i++)
{
p = (QUEUE*)lstGet(&list);
if(p)
{
printf("name = %s, age = %d\n", p->name, p->age);
free(p);
}
}
lstFree(&list);
}
结果: